栈是一种数据结构,只能从一端插入和删除操作,遵循着先进后出原则存储数据。

3.1 栈的初始化
1 2 3 4
| def __init__(self): self.stack = [] self.size = 20 self.top = -1
|
3.2 元素进栈
1 2 3 4
| def push(self, element): self.stack.append(element) self.top += 1
|
3.3 元素出栈
1 2 3 4 5 6
| def pop(self): element = self.stack[-1] self.top -= 1 del self.stack[-1] return element
|
这里可以直接调用pop函数,使用如下:
3.4 获取栈顶元素
1 2 3
| def getTop(self): return self.top
|
这里也可以直接使用列表,使用如下:
3.5 清空栈
1 2 3 4
| def empty(self): self.stack = [] self.top = -1
|
3.6 判断是否为空栈
1 2 3 4 5 6
| def isEmpty(self): if self.top == -1: return True else: return False
|
这里可以直接判断列表是否为空即可,使用如下:
3.7 判断是否为满栈
1 2 3 4 5 6
| def isFull(self): if self.top == self.size - 1: return True else: return False
|
3.8 完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
class Stack: def __init__(self): self.stack = [] self.size = 20 self.top = -1
def push(self, element): if self.isFull(): raise StackException('Stack is full') else: self.stack.append(element) self.top += 1
def pop(self): if self.isEmpty(): raise StackException('Stack is empty') else: element = self.stack[-1] self.top -= 1 del self.stack[-1] return element
def getTop(self): return self.top
def empty(self): self.stack = [] self.top = -1
def isEmpty(self): if self.top == -1: return True else: return False
def isFull(self): if self.top == self.size - 1: return True else: return False
class StackException(Exception): def __init__(self, data): self.data = data
def __str__(self): return self.data
''' 主函数 ''' if __name__ == '__main__': stack = Stack() for i in range(10): stack.push(i) print('栈顶位置:', stack.getTop()) while not stack.isEmpty(): print(stack.pop())
stack.empty() for i in range(21): stack.push(i)
|