📜  珀尔 |实现堆栈(1)

📅  最后修改于: 2023-12-03 14:56:15.222000             🧑  作者: Mango

实现堆栈

什么是堆栈?

堆栈(Stack)是一种数据结构,它采用后进先出(LIFO,Last In First Out)的原则,最后进入的元素最先出来,最先进入的元素最后出来。

想象一下一个垒着盘子的叠加系统,你只能在堆栈顶添加新的盘子或者移除堆栈顶的盘子。

堆栈的常用操作

堆栈常用操作如下:

  1. push():入栈,向栈中添加元素。
  2. pop():出栈,从栈中删除栈顶元素。
  3. peek():查看栈顶元素,但不删除。
  4. isEmpty():判断栈是否为空。
  5. size():返回栈的大小。
堆栈的实现方式
数组实现

堆栈可以采用数组实现。可以通过一个数组和一个指向堆栈顶的指针来实现。

定义一个数组和一个指针:

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()。

堆栈的应用非常广泛,例如浏览器的前进和后退功能就是用堆栈实现的。