📜  使用单链表实现堆栈(1)

📅  最后修改于: 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

在上面的例子中,首先创建了一个堆栈对象,然后执行了一系列的堆栈操作。最后,打印了堆栈的状态。

总结

在本文中,我们介绍了使用单链表实现堆栈数据结构的方法。通过使用一个链表来保存元素,我们可以实现堆栈的基本操作。堆栈在许多算法和数据结构中都有广泛的应用,例如括号匹配、逆序输出等。希望本文对你了解使用单链表实现堆栈有所帮助。