数据结构中的入栈程序 S.top = S.base + S.stacksize; 这句话的作用

Push(SqStack&S,SElemTypee){if(S.top-S.base>=S.stacksize){S.base=(SElemType*)realloc(S... Push(SqStack &S, SElemType e) { if(S.top - S.base >= S.stacksize) { S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(SElemType)); if(!S.base) return OVERFLOW; S.top = S.base + S.stacksize; S.stacksize += STA... Push(SqStack &S, SElemType e) { if(S.top - S.base >= S.stacksize) { S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(SElemType)); if(!S.base) return OVERFLOW; S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; return OK; } 上面是整个的入栈程序,用c语言实现的,为什么要加上S.top = S.base + S.stacksize;这句话呢,不加的话会有什么影响呢,是因为由于之前空间里存放的数据类型可能和当前的不同,会导致S.top++的长度受影响吗?求高手解答啊 展开 展开
 我来答
稽仲谌雨晨
2019-10-13 · TA获得超过3742个赞
知道大有可为答主
回答量:3053
采纳率:25%
帮助的人:397万
展开全部
这是栈满时重新分申请分配空间,S.base
=
(SElemType
*)realloc(S.base,(S.stacksize
+
STACKINCREMENT)*sizeof(SElemType));这条语句执行后,可能得到的空间,是重新分配的(基地址会变),也可能是在原来的基础扩充!S.top
=
S.base
+
S.stacksize;这条语句可以在重新分配空间的情况下,正确得到栈顶指针的位置!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式