堆栈的栈底和栈顶是相对的。一端被称为栈顶,相对地,就把另一端称为栈底。栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。一端被称为栈顶,相对地,就把另一端称为栈底。堆栈按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
计算机中的堆栈主要用来保存临时数据,局部变量和中断/调用子程序程序的返回地址。在栈操作过程中,有一个专门的栈指针(习惯上称它为TOP),指出栈顶元素所在的位置。堆栈指针总是指向栈顶元素。堆栈可以使向下生长的(向低地址),也可以是向上生长的。如果堆栈是向上生长的,数据入栈的时候,堆栈指针先加1,再压栈。出栈的时候先弹出数据,堆栈指针再减1。如果堆栈是向下生长的,数据入栈时指针将减1,数据出栈时指针将加1。