一、利用python列表实现堆栈和队列
堆栈:
堆栈是一个后进先出的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出。
我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的append()和pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。
# 后进先出 class Stack(): def __init__(self,size): self.size=size self.stack=[] self.top=-1 def push(self,x): # 入栈之前检查栈是否已满 if self.isfull(): raise exception("stack is full") else: self.stack.append(x) self.top=self.top+1 def pop(self): # 出栈之前检查栈是否为空 if self.isempty(): raise exception("stack is empty") else: self.top=self.top-1 self.stack.pop() def isfull(self): return self.top+1 == self.size def isempty(self): return self.top == '-1' def showStack(self): print(self.stack) s=Stack(10) for i in range(6): s.push(i) s.showStack() for i in range(3): s.pop() s.showStack() """ 类中有top属性,用来指示栈的存储情况,初始值为1,一旦插入一个元素,其值加1,利用top的值乐意判定栈是空还是满。 执行时先将0,1,2,3,4,5依次入栈,然后删除栈顶的前三个元素 """