栈(stack)又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并且按照先进后出,后进先出的规则进行运作。
如下图所示:
例如枪的弹匣,第一颗放进弹匣的子弹反而在发射出去的时候是最后一个,而最后放入弹匣的一颗子弹在打出去的时候是第一颗发射出去的。
栈的接口
如果你创建了一个栈,那么那么应该具有以下接口来进行对栈的操作
知道栈需要上述的接口后,那么在Python中,列表就类似是一个栈,提供接口如下:
python中栈接口的使用实列
class Stack():
def __init__(self,size):
self.size=size
self.stack=[]
self.top=-1
def push(self,x):# 入栈之前检查栈是否已满
if self.isfull():
raise "stack is full"
else:
self.stack.append(x)
self.top=self.top+1
def pop(self):# 出栈之前检查栈是否为空
if self.isempty():
raise "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)
def stacktop(self):
print(self.top)
s=Stack(10)
for i in range(6):
s.push(i)
s.showStack()
for i in range(3):
s.pop()
s.showStack()
s.stacktop()
[0, 1, 2, 3, 4, 5]
[0, 1, 2]
2
栈的实列: