栈是先进后出的结构体,栈顶指针有两种情况 :
1, 栈顶指针指向的是空的位置
2, 栈顶指针指向栈顶的数据
第一种情况:当栈顶指针指向的是一个空位置。当栈不为空的时候 想出栈时候,系统得知道哪个数据出栈,此时指向栈顶的指针需要向下移动一个单元告诉系统即将出栈的数据的位置。 当数据需要进栈时候,系统需要知道数据放在哪个位置,此时指针指向的是一个空单元,所以数据先入栈,然后指针再移动。
第二种情况:当栈顶指针指向的是一个实际数据。当栈不为空时,当数据想出栈,此时指针指向的正好是即将出栈的数据,指针告诉了系统这个数据的位置,因此先将数据出栈,然后移动指针。 当数据想进栈时候,系统需要知道数据放的位置。此时指针指向的位置已经有数据了,因此需要先移动告诉系统数据放的位置然后数据再入栈
指针不论指向空位置还是指向一个非空的存放实际数据的位置,指针的移动核心都是让系统知道从哪个位置取数据,或者在哪个位置放数据。