python数据结构之栈
程序员文章站
2022-07-10 09:18:50
...
一 介绍
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。
二 封装一个堆栈类
# 简单的堆栈模块
classPyStack:
def __init__(self,size =20):
self.stack =[]
self.size = size
self.top =-1
def setsize(self,size):
self.size = size
def push(self,element):
if self.isFull():
raiseStackException('Py*')
else:
element = self.stack.append(element)
self.top = self.top +1
def pop(self):
if self.isEmpty():
raiseStackException('PyStackUnderflow')
else:
element = self.stack[-1]
self.top = self.top -1
del self.stack[-1]
return element
defTop(self):
return self.top
def empty(self):
self.stack =[]
self.top =-1
def isEmpty(self):
if self.top ==-1:
returnTrue
else:
returnFalse
def isFull(self):
if self.top == self.size -1:
returnTrue
else:
returnFalse
classStackException(Exception):
def __init__(self,data):
self.data = data
def __str__(self):
return self.data
if __name__ =='__main__':
stack =PyStack()
for i in range(10):
stack.push(i)
print(stack.Top())
for i in range(10):
print(stack.pop())
stack.empty()
for i in range(21):
stack.push(i)#此处将引发异常
三 运行结果
9
9
8
7
6
5
4
3
2
1
0
Traceback (most recent call last):
File "E:\python\work\PyStack.py", line 54, in <module>
stack.push(i) #此处将引发异常
File "E:\python\work\PyStack.py", line 11, in push
raise StackException('Py*')
StackException: Py*
上一篇: jvm内存区域