📅  最后修改于: 2023-12-03 14:49:53.449000             🧑  作者: Mango
本文将介绍如何使用单链表来实现堆栈(Stack)数据结构。堆栈是一种遵循后进先出(LIFO)原则的数据结构,可以通过在一端插入和删除元素来实现。
堆栈通常具有以下基本操作:
push(item)
: 在堆栈的顶部插入一个元素。pop()
: 从堆栈的顶部删除一个元素,并返回该元素。top()
: 返回堆栈顶部的元素,但不对堆栈进行修改。isEmpty()
: 检查堆栈是否为空。size()
: 返回堆栈中元素的个数。我们可以使用单链表来实现堆栈数据结构。每个节点将包含一个元素和一个指向下一个节点的指针。堆栈的顶部将是链表的头部。
下面是用单链表实现堆栈的示例代码:
class Node:
def __init__(self, item):
self.item = item
self.next = None
class Stack:
def __init__(self):
self.top = None
self.size = 0
def push(self, item):
new_node = Node(item)
if self.isEmpty():
self.top = new_node
else:
new_node.next = self.top
self.top = new_node
self.size += 1
def pop(self):
if self.isEmpty():
raise Exception("Stack is empty")
else:
item = self.top.item
self.top = self.top.next
self.size -= 1
return item
def top(self):
if self.isEmpty():
raise Exception("Stack is empty")
else:
return self.top.item
def isEmpty(self):
return self.top is None
def size(self):
return self.size
现在我们可以使用上述的 Stack
类来执行堆栈操作。下面是一些使用堆栈的例子:
stack = Stack()
print(stack.isEmpty()) # 输出 True
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.size()) # 输出 3
print(stack.pop()) # 输出 3
print(stack.top()) # 输出 2
print(stack.size()) # 输出 2
print(stack.isEmpty()) # 输出 False
在上面的例子中,首先创建了一个堆栈对象,然后执行了一系列的堆栈操作。最后,打印了堆栈的状态。
在本文中,我们介绍了使用单链表实现堆栈数据结构的方法。通过使用一个链表来保存元素,我们可以实现堆栈的基本操作。堆栈在许多算法和数据结构中都有广泛的应用,例如括号匹配、逆序输出等。希望本文对你了解使用单链表实现堆栈有所帮助。