一、栈 栈描述的是操作,顺序表描述的是怎么存放 栈后进先出队列是先进先出 用顺序表实现栈 Stack()创建一个新的空栈 push(item)添加一个新的元素item到栈顶,压栈 pop()弹出栈顶元素,出栈 peek()返回栈顶元素 is_empty()判断栈是否为空 size()返回栈的元素个数 class Stack(object): def __init__(self): self.__list=[] def push(self,item): self.__list.append(item) self.__list.insert(0,item) def pop(self): return self.__list.pop() def peek(self): if self.__list: return self.__list[-1]#列表的最后一个元素 else: return None def is_empty(self): return self.__list==[] def size(self): return len(self.__list) if __name__=='__main__': s=Stack() s.push(1) s.push(2) s.push(3) s.push(4) print(s.pop()) print(s.pop()) print(s.pop()) print(s.pop()) 二、队列 取的那端叫队头,添加的那端叫队尾 Queue() enqueue(item)往队列中添加一个item元素 dequeue()从队列头部删除一个元素 is_empty()判断一个队列是否为空 class Queue(object): 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__': s=Queue() s.enqueue(1) s.enqueue(2) s.enqueue(3) s.enqueue(4) print(s.dequeue()) print(s.dequeue()) print(s.dequeue()) print(s.dequeue()) 三、双端队列 相当于两个栈的底部合在一起 Deque()创建一个空的双端队列 add_front(item)从队头加入一个item元素 add_rear(item)从队尾加入一个item元素 remove_front()从队头删除一个item元素 remove_rear()从队尾删除一个item元素 is_empty判断双端队列是否为空 size()返回队列的大小 class Deque(object): def __init__(self): self.__list=[] def add_front(self,item): self.__list.insert(0,item) def add_rear(self,item): self.__list.append(item) def pop_front(self): return self.__list.pop(0) def pop_rear(self): return self.__list.pop() def is_empty(self): return self.__list == [] def size(self): return len(self.__list)
python第18天栈与队列
最新推荐文章于 2023-01-11 13:05:35 发布