详细版本见个人博客:Python用list实现堆栈和队列
Python中可以用list来模拟栈和队列:
- 栈(stack):只能在一端进行数据操作,遵循后进先出(LIFO)原则
- 队列(queue):可以在两端进行数据操作,遵循先进先出(FIFO)原则,出队列的一端称为队首,入队列的一端称为队尾
一、栈
1、栈要记录的数据
- 栈顶位置top:注意这个top有两种理解方式,一种是表示栈的最后一个数据的位置,另一种是表示栈的最后一个数据的下一个位置,这两种理解对栈的操作代码有一定的影响
- 栈最大大小size
2、栈的操作
isEmpty()
:判断栈是否为空isFull()
:判断栈是否已满push(element)
:向栈中添加一个值,注意栈是否为满的pop()
:从栈中弹出一个值,注意栈是否为空
3、Python列表实现栈
class StackException(Exception):
def __init__(self, data):
self.data = data
def __str__(self):
return self.data
class Stack(object):
def __init__(self,size = 10):
self.S = []
self.size = size # 栈大小
self.top = -1 # 栈顶位置
def setSize(self, size):
# 设置栈的大小
self.size = size
def isEmpty(self):
# 判断栈是否为空
if self.top == -1:
return True