关于网友提出的“ 栈满时top指针在哪里(问题在图片里)”问题疑问,本网通过在网上对“ 栈满时top指针在哪里(问题在图片里)”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 栈满时top指针在哪里(问题在图片里)
描述:栈c语言数据结构

Status Push(SqStack *S,SElemType e)
{ /* 插入元素e为新的栈顶元素 */
if((*S).top-(*S).base>=(*S).stacksize) /* 栈满,追加存储空间 */
{
(*S).base=(SElemType *)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!(*S).base)
exit(OVERFLOW); /* 存储分配失败 */
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCREMENT;
}
*((*S).top)++=e;
return OK;
}
解决方案1:
你不去用这个栈顶指针访问里面的数据就可以了。你应该判断下这个指针是否超过了有效地址,超过了就是栈满。
解决方案2: 看实现。
你可以任意处理。
大概有这么两种方式:
1)初始化为第一个元素,则满时顶在栈外
2)初始化为下一个元素是第一个元素,则满时顶在最后一个元素。
估计多半都是第一种方式。
以上介绍了“ 栈满时top指针在哪里(问题在图片里)”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3681881.html