📅  最后修改于: 2023-12-03 14:56:15.222000             🧑  作者: Mango
堆栈(Stack)是一种数据结构,它采用后进先出(LIFO,Last In First Out)的原则,最后进入的元素最先出来,最先进入的元素最后出来。
想象一下一个垒着盘子的叠加系统,你只能在堆栈顶添加新的盘子或者移除堆栈顶的盘子。
堆栈常用操作如下:
堆栈可以采用数组实现。可以通过一个数组和一个指向堆栈顶的指针来实现。
定义一个数组和一个指针:
class Stack:
def __init__(self):
self.stack = []
self.top = -1
然后 push() 方法向栈中添加元素,pop() 方法从栈中弹出元素:
def push(self, item):
self.stack.append(item)
self.top += 1
def pop(self):
if self.top == -1:
return None
item = self.stack.pop()
self.top -= 1
return item
堆栈也可以实现链表。
可以使用一个链表和一个指向链表头的指针来实现。
定义一个链表和一个指针:
class Node:
def __init__(self, value):
self.value = value
self.next = None
class Stack:
def __init__(self):
self.head = None
然后 push() 方法向栈中添加元素,pop() 方法从栈中弹出元素:
def push(self, item):
node = Node(item)
node.next = self.head
self.head = node
def pop(self):
if self.head is None:
return None
item = self.head.value
self.head = self.head.next
return item
堆栈可以用数组或链表来实现。
堆栈的常见操作包括 push()、pop()、peek()、isEmpty() 和 size()。
堆栈的应用非常广泛,例如浏览器的前进和后退功能就是用堆栈实现的。