关于栈顶指针初值为-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.
初来乍到,请各位大佬多多关照,如有错误,欢迎指正!(淦!第一篇耗时一个小时呜呜呜~)