欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于栈顶指针初值为-1和0的区别

程序员文章站 2024-02-02 15:41:52
...

关于栈顶指针初值为-1或者0 的区别(c语言)

栈顶指针:S.top
栈顶元素:S.data[S.top]

当栈顶指针的初始值设置 S.top=-1时

ps:
当栈为空时,栈顶指针指向data[-1],但栈底是data[0]

top
data{4}
data{3}
data{2}
data{1}
data{0}
data{-1}

进栈操作:栈不满时,栈顶指针先+1,在送值到栈顶元素

(通俗来讲:先给客人指路,客人才知道自己的座位在哪)

S.top=S.top+1;
S.data[S.top]=x;

或者:

S.data[++S.top]=x;

出栈操作:栈非空时,先取栈顶元素值,再将栈顶指针-1

S.data[S.top]=x;
S.top=S.top-1;

或者:

x=S.data[S.top--];

栈空条件:S.top==-1;
栈满条件:S.top==MaxSize-1;
栈长:S.top+1.

当栈顶指针的初始值设置 S.top=0时

ps:
当栈为空时,栈顶指针指向栈底data[0]

进栈操作:栈不满时,先送值到栈顶元素,栈顶指针再+1

通俗来讲:客人一进门,就看见有服务生(栈顶指针)在叫自己过去坐,当这位客人落座后,服务生将会去下一个座位旁继续等待客人。

S.data[S.top]=x;
S.top=S.top+1;

或者:

S.data[S.top++]=x;

出栈操作:栈非空时,先将栈顶指针-1,再取栈顶元素值(倘若先取值,再将栈顶指针-1,则会出错)

S.top=S.top-1;
x=S.data[S.top];

或者:

x=S.data[--S.top];

栈空条件:S.top==0;

栈满条件:S.top==MaxSize;
栈长:S.top.

初来乍到,请各位大佬多多关照,如有错误,欢迎指正!(淦!第一篇耗时一个小时呜呜呜~)