yydg.net
当前位置:首页 >> stACkinCrEmEnt >>

stACkinCrEmEnt

栈增长

S.base =(SElemType*) realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType)); 这条语句,是“重新分配空间”.原先由S.base所指向的空间,只容纳S.stacksize个元素.重新分配空间之后,可以容纳“S.stacksize+STACKINCREMENT”个元素,就是新拓展了STACKINCREMENT个元素的空间.每个元素占据SElemType大小的空间.新分配的空间,依然由S.base指向.希望我说明白了,谢谢.

S是个堆栈,S->base表示堆栈的基地址relloc可以参考http://baike.baidu.com/view/736230.htm?fr=ala0_1那句话的意思是增加一个ElemType大小的内存单元到堆栈S尾部

这是栈满时重新分申请分配空间,S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(SElemType));这条语句执行后,可能得到的空间,是重新分配的(基地址会变),也可能是在原来的基础扩充!S.top = S.base + S.stacksize;这条语句可以在重新分配空间的情况下,正确得到栈顶指针的位置!

下面随便入几个元素都可以,栈的遍历就是从栈顶开始的取元素的,你要是只要一个栈顶元素,把循环去掉就好了#include #include #define STACK_INIT_SIZE 100#define STACKINCREMENT 10templateclass SqStack{ ElemType *base; int

这个我也遇到了,有以下几种可能:1,有可能是漏写;}或者将)写成},或者是中英文混写,如将英文的)写成中文的).2.机器码本身的问题,需要对数据类型进行typedef,如,使用int类型或者char类型,分别进行定义,typedefinDTYPE,

如果你的栈有头结点且头结点不存储有效数据,且top指向栈顶的有效数据,那么top->next == null表示栈空. 如果你的栈有头结点且头结点存储有效数据,且top指向栈顶的有效数据,那么top==null表示栈空.

#include<stdio.h>#include<math.h>void main(){int ten,er=0,fig;int i;printf("输入十进制数:");scanf("%d",&ten);if(ten!=1){for(i=1;ten>1;i++){fig=ten%2;ten=ten/2;er+=fig*pow(10,(i-1));} er+=1*pow(10,(i-1));printf("转化为二进制数为:%d\

S.base指向的分配的内存块有(S.stacksize+STACKINCREMENT)这么大,但是S.base本身的值不是个确定值(指针嘛),所以S.base+S.stacksize!=两个S.stacksize,这样加一下是让S.top指向栈顶.

例,入栈顺序为6 5 4 3 2 1 ,输入一个序列,判断是否为出栈序列#include#include#define arsize 10#define stack_increment 20 using namespace std; struct _stack//栈{int *top;int *base;int stacksize;};void initstack(_stack &stack){ stack.base=(int

网站首页 | 网站地图
All rights reserved Powered by www.yydg.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com