堆栈(Stack)是一种常见的数据结构,它的特点是后进先出(Last In First Out,LIFO)。堆栈类似于一个垂直的堆,数据元素只能从堆栈的顶部插入(称为“入栈”),也只能从堆栈的顶部删除(称为“出栈”)。
堆栈中的插入和删除操作只能在栈顶进行,所以堆栈的插入和删除操作都是O(1)的时间复杂度。堆栈的主要应用包括:程序中的函数调用栈、表达式求值、内存管理、回溯算法等等。
举个例子,假设有一堆书需要从地上放到书架上,为了避免乱放,可以使用一个箱子作为堆栈,每次只能从箱子的顶部放入一本书,取书时也只能从箱子的顶部取书。这样,放入的最后一本书会被放在箱子的顶部,取书时也会先取出最后放入的书。这就是堆栈的基本原理。