学习笔记,仅供参考,有错必纠
栈的概念
栈(stack)是一种容器,可存入数据元素、访问元素、删除元素。
它的特点在于只能允许在容器的一端(称为栈顶端指标)进行加入数据(push)和输出数据(pop)的运算。
没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。
由于栈数据结构只允许在一端进行操作,因而按照后进先出(Last In First Out)的原理运作,简称LIFO。
图示定义一个栈:
class Stack: # 初始化空栈 def __init__(self): self.__list = [] def push(self, item): self.__list.append(item) def pop(self): if self.__list: return self.__list.pop() else: return None def peek(self): if self.__list: return self.__list[-1] else: return None def is_empty(self): return self.__list is None def size(self): return len(self.__list) if __name__ == '__main__': s = Stack() s.push(1) s.push(2) s.push(3) print(s.pop()) print(s.pop()) print(s.pop())输出:
3 2 1定义一个队列:
# 定义队列 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 is None def size(self): return len(self.__list) if __name__ == '__main__': q = Queue() q.enqueue(1) q.enqueue(2) q.enqueue(3) print(q.dequeue()) print(q.dequeue()) print(q.dequeue())输出:
1 2 3双端队列的概念
双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。
双端队列中的元素可以从两端弹出,插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。
图示输出:
4 2 1 4 3