标题:望大神帮我看看这个关于栈的问题
取消只看楼主
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
已结贴  问题点数:20 回复次数:1 
望大神帮我看看这个关于栈的问题
(1)书上说非空栈的栈顶指针始终指向栈顶元素的下一位置,第一张图里也有示图:

(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编辑过]

搜索更多相关主题的帖子:  指向 top next 数据 
2018-02-10 17:21
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
得分:0 
回复 2楼 Jonny0201
哦哦,所以说抛开前面那些话,只看我那两个程序,Pop函数所描述的是没有头结点的,而GetTop函数里是有头结点的,是吧
2018-02-10 20:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484696-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.368220 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved