📜  数据结构-堆栈(1)

📅  最后修改于: 2023-12-03 15:26:09.228000             🧑  作者: Mango

数据结构-堆栈

什么是堆栈?

堆栈是一种数据结构,它是一个后进先出(Last In First Out)的数据集合。只有一个出口的线性一维结构,仅允许在表尾进行插入和删除操作,因此,在插入和删除的说法中,只有“后进先出”(LIFO)。

堆栈的应用场景

堆栈的常见应用场景包括:

  • 表达式求值(算数表达式、布尔表达式、等)
  • 函数调用栈
  • 浏览器历史记录(后面的网页访问记录覆盖前面的)
  • 撤销/重做操作
实现堆栈

堆栈可以使用数组和链表两种数据结构实现。

数组实现堆栈
class Stack:
    def __init__(self):
        self.stack = []

    def push(self, value):
        self.stack.append(value)

    def pop(self):
        if len(self.stack) == 0:
            return None
        else:
            return self.stack.pop()

    def peek(self):
        if len(self.stack) == 0:
            return None
        else:
            return self.stack[-1]

    def is_empty(self):
        return len(self.stack) == 0
链表实现堆栈
class Node:
    def __init__(self, value=None, next=None):
        self.value = value
        self.next = next

class Stack:
    def __init__(self):
        self.head = None

    def push(self, value):
        new_node = Node(value)
        new_node.next = self.head
        self.head = new_node

    def pop(self):
        if self.head is None:
            return None
        else:
            value = self.head.value
            self.head = self.head.next
            return value

    def peek(self):
        if self.head is None:
            return None
        else:
            return self.head.value

    def is_empty(self):
        return self.head is None
总结

堆栈是一种常见的数据结构,具有后进先出的特点。它可以使用数组和链表两种数据结构实现。在实际应用中,堆栈被广泛用于表达式求值、函数调用栈、浏览器历史记录以及撤销/重做等操作。熟练掌握堆栈的使用和实现,对于程序员来说是非常重要的基础知识。