栈满时top指针在哪里(有关问题在图片里)
栈满时top指针在哪里(问题在图片里)Status Push(SqStack *S,SElemType e) { /* 插入元素e为新的栈顶元素 *
栈满时top指针在哪里(问题在图片里)

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;
}
栈 c语言 数据结构
[解决办法]看实现。
你可以任意处理。
大概有这么两种方式:
1)初始化为第一个元素,则满时顶在栈外
2)初始化为下一个元素是第一个元素,则满时顶在最后一个元素。
估计多半都是第一种方式。
[解决办法]你不去用这个栈顶指针访问里面的数据就可以了。你应该判断下这个指针是否超过了有效地址,超过了就是栈满。