什么是堆栈?

堆栈是一种执行“LIFO”算法的数据结构。

想象一根直径很小的竹筒,一端开口,一端封闭。有几个编号的球,直径比竹筒略小。现在把不同号码的球放进竹筒里,我们可以发现一个规律:先放进去的球只能后拿出来,反之,后放进去的球可以先拿出来。所以“先入后出”是这种结构的特点。

栈就是这样一种数据结构。就是在内存中开辟一个存储区域,数据一个一个的存储在这个区域中(也就是“推送”)。有一个地址指针总是指向最后推入堆栈的数据所在的数据单元,存储这个地址指针的寄存器称为堆栈指针。数据开始被放入的单元被称为“栈底”。数据是一个一个存储的,这个过程叫做“压栈”。在压栈过程中,每压入一条数据到栈中,就放入与前一个单元格相连的下一个单元格中,栈指针中的地址自动递增1。在读取这些数据时,根据堆栈指示符中的地址读取数据,堆栈指示符中的地址数自动减1。这个过程叫做“弹出”。这样就实现了后进先出的原则。

栈是计算机中最常用的数据结构。比如,函数的调用在计算机中是通过栈来实现的。

栈可以存储在数组或链表中,后面会介绍。