您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 栈满时top指针在哪里(问题在图片里)

栈满时top指针在哪里(问题在图片里)

来源:网络整理     时间:2016/8/31 13:37:04     关键词:

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

问题: 栈满时top指针在哪里(问题在图片里)
描述:

c语言数据结构

 栈满时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;
 }

解决方案1:

引用 2 楼 qq921965140 的回复:
Quote: 引用 1 楼 lm_whales 的回复:

看实现。
你可以任意处理。
大概有这么两种方式:
1)初始化为第一个元素,则满时顶在栈外
2)初始化为下一个元素是第一个元素,则满时顶在最后一个元素。
估计多半都是第一种方式。
我看的是严蔚敏老师的书,上面说栈顶指针指向栈顶元素的下一个位置,如图,栈满时不就非法了吗?

你不去用这个栈顶指针访问里面的数据就可以了。你应该判断下这个指针是否超过了有效地址,超过了就是栈满。 解决方案2:

看实现。
你可以任意处理。
大概有这么两种方式:
1)初始化为第一个元素,则满时顶在栈外
2)初始化为下一个元素是第一个元素,则满时顶在最后一个元素。
估计多半都是第一种方式。


以上介绍了“ 栈满时top指针在哪里(问题在图片里)”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3681881.html

相关图片

相关文章