e=*(S.top-1)是什么意思啊,最好详细一点。而且为什么有个星号呢?急需懂啊

Status GetTop(SqStack S,SElemType &e){
if(s.top==s.base)return ERROR;
e=*(S.top-1);
return OK;
}//GetTop

看类SqStack的定义
其中变量top和base应该是一个指针
S.top-1表示指针数组中前一个指针
*(S.top-1)表示取该指针所指向的变量的值

这个函数判断是否可以出栈
如果栈空,返回错误
否则,返回栈顶元素追问

我是想问为什么是“e=*(S.top-1)”而不是“e=*S.top;S.top=S.top-1”呢?不是先删除后移动Top指针吗?请你说说,谢谢

追答

要不你把初始化的init,入栈的push,还有结构体的定义都发上来吧
这个是要相互匹配的

追问

太长了,我发个地址给你吧
http://blog.csdn.net/qqweinizhizhuo/article/details/4055707
程序也差不多的,你看看

追答

注意Push中
*S.top++=e;//top自增

这句话的实际操作顺序是
*S.top=e;
S.top++;

也就是说,S.top其实比最顶端的数据要大1
因此,在getTop时,需要e=*(S.top-1)

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答