S.base =(SElemType*) realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType));是什么意思?
发布网友
发布时间:2022-05-02 10:57
我来回答
共1个回答
热心网友
时间:2023-10-03 08:18
S.base =(SElemType*) realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType));
这条语句,是“重新分配空间”。原先由S.base所指向的空间,只容纳S.stacksize个元素。重新分配空间之后,可以容纳“S.stacksize+STACKINCREMENT”个元素,就是新拓展了STACKINCREMENT个元素的空间。每个元素占据SElemType大小的空间。
新分配的空间,依然由S.base指向。
希望我说明白了,谢谢。追问S.base指向已经扩展了STACKINCREMENT个元素的栈底,是吗?
追答根据S.base的名称看,指向的是新栈的“栈底”。这些语句应该是在“初始化”或者“扩展”栈的时候使用,因此,栈底更容易操作。
另外,由于这个栈是用malloc()或realloc()所获取的连续空间,无论所指是栈底或者栈顶,都可以根据元素所在的“索引”,根据简单的加减(对应栈的push()或pop()),定位到所要的位置。
热心网友
时间:2023-10-03 08:18
S.base =(SElemType*) realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType));
这条语句,是“重新分配空间”。原先由S.base所指向的空间,只容纳S.stacksize个元素。重新分配空间之后,可以容纳“S.stacksize+STACKINCREMENT”个元素,就是新拓展了STACKINCREMENT个元素的空间。每个元素占据SElemType大小的空间。
新分配的空间,依然由S.base指向。
希望我说明白了,谢谢。追问S.base指向已经扩展了STACKINCREMENT个元素的栈底,是吗?
追答根据S.base的名称看,指向的是新栈的“栈底”。这些语句应该是在“初始化”或者“扩展”栈的时候使用,因此,栈底更容易操作。
另外,由于这个栈是用malloc()或realloc()所获取的连续空间,无论所指是栈底或者栈顶,都可以根据元素所在的“索引”,根据简单的加减(对应栈的push()或pop()),定位到所要的位置。
S.base =(SElemType*) realloc(S.base, (S.stacksize+STACKINCREMENT)*si...
S.base =(SElemType*) realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType));这条语句,是“重新分配空间”。原先由S.base所指向的空间,只容纳S.stacksize个元素。重新分配空间之后,可以容纳“S.stacksize+STACKINCREMENT”个元素,就是新拓展了STACKINCREMENT个元素的空间。每个元素占据S...
数值后的错误后缀
Status 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)exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;} S.top++=e;return OK;}...
解释这段代码的具体作用和原理(要详细)
SElemType GetTop(SqStack S){ if(S.top>S.base)return *(S.top-1);else return NULL;} //入栈操作 Status 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)e...
谁帮我改一下这个用栈写的C语言行编辑程序啊,老是expected primary-ex...
Status GetTop(SElemType *e){ if(S.top==S.base) return ERROR;e=*(S.top-1);return OK;}//GrtTop Status Push(SElemType e){ if(S.top-S.base>=S.stacksize){ S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base){ exit(OVERFLO...
用C语言编个走迷宫程序,要求:1:迷宫的规模和地图由程序随机自动生成...
s->base=(SElemType *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(SElemType));if(!s->base) Error("Overflow");s->top=s->base+s->stacksize;s->stacksize+=STACKINCREMENT;}*s->top++=e;return OK;} /**//* Push */SElemType Pop(Stack *s,SElemType e)/**//* The element...
利用堆栈求中缀表达式值
ElemType e; if (S.top == S.base) return ERROR; e = *(S.top-1); return e;}Status Push (SqStack &S,ElemType e){ //插入元素e为新的栈顶元素 if (S.top - S.base >= S.stacksize){ S.base = (ElemType *) realloc ( S.base, (S.stacksize + STACKINCREMENT) * sizeof(ElemType...
c++利用邻接矩阵存储方法实现图的存储与输出。
void stack<QElemType>::Push(QElemType e){ if(S.top - S.base >= S.stacksize) { S.base = (QElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof(QElemType)); if(!S.base) exit(0); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ =...
迷宫求解
S->base=(SElemType *)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S->base) { printf("重新申请空间失败.\n"); exit(0); } S->top=S->base+S->stacksize;//更改栈顶指针 S->stacksize+=STACKINCREMENT; } ...
四则运算,要使用负数。
SElemType *top;int stacksize;}SqStack;Status InitStack(SqStack &S) //构造一个空栈 { S.base = ( SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType) );if(!S.base) return OVERFLOW;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;} Status Push(SqStack &S,S...
C语言利用栈结构具有先进后出的特性,编程实现:输入一个任意十进制数,转...
s.top = s.base;} void push(stack &s,elemtype e)//入栈,栈满则追加栈空间 {if(s.top-s.base>=initsize)s.base=(elemtype *)realloc(s.base,(s.stacksize+increment)*sizeof(elemtype));if(!s.base)exit(0);s.stacksize+=increment;s.top=e;s.top++;} void pop(stack &s,...