栈的顺序存储实现(考研)
王道考研笔记
知识总览:

顺序栈的定义:
下图中top变量是用来指向栈顶元素的,top=4是数组的下标

初始化操作:
在初始化操作中,因为top指针是用于指向栈顶的,可此时data[0]并没有任何元素,所以S.top=-1。因此我们在判断栈是否为空的时候,只需判断top=-1就行了。

进栈操作:
下图中的进栈操作红色区域我们可以进行简化操作,但是我们同时要注意++操作的位置。写栈操作时,一定要进行栈满的操作。

出栈操作:
出栈的操作,我们需要将栈顶的值赋值给&x,再使top-1下移。但其实这种做法只是逻辑上被删除了,数据依然残留在内存当中。

读栈顶元素的操作:
下图中读栈的操作和出栈的操作类似

下面是关于进栈和出栈的另一种方式,这里我们需要特别注意的地方那就是初始化栈时top=0。此时的top不再是指向栈顶,而是指向了下一个元素进栈的位置。

Top不再指向栈顶的位置,所以进栈和出栈的操作与之前的操作就变得不一样了。这里需要大家特别注意!!!
栈满得条件:top==Maxsize

共享栈:
共享栈是一个非常新奇的思路,通过双向进栈的方式填充栈,这样的目的主要是为了减小内存空间的浪费,因为初始化一个栈需要事先开辟一大片的内存空间。

知识总结:


浙公网安备 33010602011771号