#2
Jonny02012018-02-10 19:31
|
只有本站会员才能查看附件,请 登录
(2)但是在链栈里,S为什么又指向栈顶?——这么说吧,我的疑问都在下面的注释里,大佬帮看看。谢啦第二张图:
只有本站会员才能查看附件,请 登录
程序代码:
Status GetTop(LinkStack S,ElemType &e) {
if(!(S->top->next)) exit(ERROR);
S->top=S->top->next; //这里先让top指向了它的next,相当于top现在该指向第二张图中S的下面(即第二层)
e=S->top->data; //然后再把新的第二层top所指的结点的data给了e,那么这样一来返回的不就是第二层的数据了吗?而不是栈顶元素了。。。
return OK;
}
然后是删除
程序代码:
Status Pop ( LinkStack *S, SElemType *e ) {
LinkStackPtr p;
if ( StackEmpty( *S )) return ERROR;
*e = S->top->data; //这儿先把top(也就是第二张图里的第一层)所指的数据给了e
p = S->top;
S->top = S->top->next; //然后在这里才让top指向它的next(即第二层),所以都是对栈顶操作,为啥一个是取第一层数据,一个是取第二层数据??
free (p); S->count - -;
return OK;
}
[此贴子已经被作者于2018-2-10 17:28编辑过]