1. 数据结构 —— 栈 Stack
栈: 是只允许在一端进行插入或删除的线性表。
栈顶(Top):线性表允许进行插入删除的那一端。
栈底(Bottom):固定的,不允许进行插入和删除的另一端。
空栈:不含任何元素的空表。
栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构
2.两种常用类型的栈
2.1 顺序栈
顺序栈使用空间中地址连续的数组实现
2.2 链式栈
顺序栈使用next指针实现邻接关系
3. 顺序栈实现
top定义:下标最大元素的下标,如果是空栈则定义top=-1
顺序栈需要申请一块地址,top不能超过StackSize-1
class SeqStack:
def __init__(self,StackSize=100):
self.StackSize=StackSize
self.top=-1
#top定义为下标最大元素的下标
self.data=[None]*self.StackSize
def Push(self,x):
if self.top>=self.StackSize-1:
raise ValueError("上溢异常")
self.top+=1
self.data[self.top]=x
def Pop(self):
if self.top==-1:
raise ValueError("下溢异常")
self.top-=1
return self.data[self.top+1]
def GetTop(self):
if self.top==-1:
raise ValueError("下溢异常")
return self.data[self.top]
def display(self):
for i in range(self.top+1):
print(self.data[i],end=" ")
print()
s=SeqStack()
s.Push(1)
s.Push(2)
s.display()
s.Push(3)
s.Pop()
s.display()