栈(Stack)
栈顾名思义,就像一堆叠起来的物体,最后放进去的东西最先取出来。栈常见的操作有:
- 进栈(Push) - 将元素压入栈顶
- 出栈(Pop) - 将栈顶元素移除
- 查看栈顶 - 返回栈顶元素但不移除
- 判断栈空 - 判断栈内是否还有元素
- 判断栈满 - 根据栈的最大长度判断是否可继续插入
栈通常也需要设置最大容量来避免内存溢出。
Python实现栈
使用Python列表可以简单实现栈的所有操作:
class Stack:
def __init__(self, max_size):
self.stack = []
self.max_size = max_size
def push(self, item):
if len(self.stack) == self.max_size:
print("Stack is full!")
else:
self.stack.append(item)
def pop(self):
if len(self.stack) > 0:
return self.stack.pop()
else:
print("Stack is empty!")
def peek(self):
if len(self.stack) > 0:
return self.stack[-1]
else:
print("Stack is empty!")
def size(self):
return len(self.stack)
def is_empty(self):
return self.stack == []
stack = Stack(3)
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop())
print(stack.peek())
print(stack.is_empty())
print(stack.size())
栈作为一种后进先出的数据结构,在递归调用、浏览器后退等应用中很常用。掌握栈的操作和实现可以帮助我们更好地运用这种数据结构。