出栈和压栈 应如何理解?

来源:百度知道 编辑:UC知道 时间:2024/09/20 14:29:03
呵呵,使用vb编程快10年了,但还是没有能理解出栈和压栈,请大家帮个忙,最好举个典型的例子.

堆栈是RAM中划出的一片特殊存储区,用于临时存放一些重要数据(这些数据存放一会后是必须回到原位的),其中数据的位置由堆栈指针确定,而数据的存放和读取则由入栈指令和出栈指令控制,入出必须对应成对的使用才能使压入的数据正确的回到压入前的位置。
比如:当前正在运行某程序,要调用一个子程序,而子程序中会用到A、B、C三单元,主程序中这三个单元中现有的信息在子程序运行结束后还要继续用的,那么就需要用堆栈临时保存这些数据,等子程序结束后再还原。入栈时是压入A、压入B、压入C,出栈则必须是出C、出B、出A。这就好比子弹夹,先压进去的子弹在下,后压进去的在上,子弹进入枪膛(相当于出栈)则是相反,先上面后下面,正如一楼“一叠盘子”的比喻。这种用法的约定,是堆栈本身特性决定的,必须遵守。

栈是数据结构的概念。可以把栈比成一堆叠放的盘子,出栈就是取出最顶端的盘子,压栈就是把外面的盘子放到顶端。除此之外栈不能有其它操作。因此它和队列一样是受限的线性表。