python 实现栈和队列

本文不涉及队列概念的详细讲解,而着重利用 python 实现栈和队列,其中穿插代码讲解。

其它数据结构:链表、二叉树。

目录

    • 构造栈
    • 压栈
    • 出栈
    • 栈顶
    • 判空
    • 大小
    • 栈的使用
  • 队列
    • 构造队列
    • 入队
    • 出队
    • 判空
    • 大小
    • 队列使用

栈实现数据的后进先出(LIFO)。栈可以输入数据,弹出数据,获取栈顶元素等操作。

构造栈

使用列表的方式实现栈。

class Stack():
    def __init__(self):
        self.__list = []

压栈

把新加的元素放到列表尾部。

def push(self, item):
    """压栈"""
    self.__list.append(item)

出栈

删除掉列表尾部元素。

def pop(self):
    """出栈"""
    return self.__list.pop()

栈顶

获得列表末尾的元素。

def peek(self):
    """获得栈顶元素"""
    return self.__list[-1]

判空

判断列表是不是一个空列表。

def is_empty(self):
    return self.__list == []

大小

直接获取列表的大小。

def size(self):
    """获取栈中元素个数"""
    return len(self.__list)

栈的使用

if __name__ == "__main__":
    s = Stack()
    print(s.is_empty())
    print(s.size())

    s.push(100)
    s.push(200)
    s.push(300)
    print(s.is_empty())
    print(s.size())

    print(s.peek())
    print(s.pop())
    print(s.peek())
    print(s.size())

队列

队列实现数据的先进先出(FIFO)。在队列当中可以在队尾添加元素,从队头获取元素。

构造队列

同样使用列表的方式实现栈。

class Queue():
    def __init__(self):
        self.__list = []

入队

从列表尾部添加元素。

def enqueue(self, item):
    """在队尾插入元素"""
    self.__list.append(item)

出队

删除列表的第一个元素。

def dequeue(self):
    """从队头删除元素"""
    return self.__list.pop(0)

判空

判断队列是否为空与栈相同。

def is_empty(self):
    """判断队列是否为空"""
    return self.__list == []

大小

通过获取列表长度得到队列长度。

def size(self):
    """获得队列中元素个数"""
    return len(self.__list)

队列使用

if __name__ == "__main__":
    q = Queue()
    print(q.is_empty())
    print(q.size())

    q.enqueue(100)
    q.enqueue(200)
    q.enqueue(300)
    print(q.is_empty())
    print(q.size())

    print(q.dequeue())
    print(q.dequeue())
    print(q.size())

你可能感兴趣的:(数据结构,python,开发语言,栈,队列)