电池充满问题

时间:2019-10-08 来源:365bet365娱乐 作者:365bet体育在线直播
全部展开
当您将测试指针添加到源程序时,测试值的更改表明删除空间判断将产生严重的后果。
如果最大值为22,则输入25个测试数据并确认#includestdio测试更改。
h#containstdlib。
h#defineSTACK_INIT_SIZE10 // // defineSTACKINCREMENT10#defineOK1#defineERROR0#defineOVERFLOW-2typedefstructstack{int * base; int * top; intstacksize; //当前分配给元素的存储空间}SqStack; double * test; // pointerintInitStack(SqStack&S){//建立一个空栈S
Base =(int *)malloc(STACK_INIT_SIZE * sizeof(int));如果(!
S.
基本)输出(OVERFLOW); S.
以上= S
基地; S.
堆栈大小= STACK_INIT_SIZE; //增加测试空间,显示分配的内存地址,并记录最大测试数=(double *)malloc(sizeof(double)); printf(S.
基数=%p,Smax =%p,测试=%pn,S
底座,S
基数+ S
Stacksize,test); printf(最大数量:%dn,(int *)test-S。
Base); returnOK;}intGetStack(SqStackS,int&e){//弱堆栈不为空,因此请使用e返回S的高位元素并返回OK。否则,ERRORif(S.
顶端== S
Base)returnERROR; e = *(S.
Top-1); //S。
返回页首++; returnOK;}intPush(SqStack&S,inte){//插入元素e是堆栈中新的顶部元素// if(S.
前S。
基数= S
堆栈大小)//堆栈已满,额外的存储空间///// S
Base =(int *)重新分配(S.
基地,(南
Stacksize + STACKINCREMENT)* sizeof(int)); //如果(!
S.
Base)出口(溢出); //存储空间分配失败// S
以上= S
基数+ S
堆栈大小; // S
Stacksize + = STACKINCREMENT; //}* S
上++ = e; // S
返回页首++; returnOK;}intPop(SqStack和S,int和e){//弱堆栈不为空,删除S堆栈的顶部元素,并用e返回其值,然后返回OK。否则,ERRORif(S.
顶端== S
Base)returnERROR; e = * -S
ReturnOK;}intmain(无效){SqStackS; intstat,i,e,n; stat = InitStack(S); printf(输入要插入到堆栈中的项目数:); scanf(%d,*测试)= 3。
14; printf(初始测试值=%lfn,* test);对于(i = 0; ii ++){printf(在ne中输入要插入的项目:); scanf(%d,stat = Push(S,e);}printf(立即尝试=%lfn,* test); stat = GetStack(S,e); printf(输出堆栈的n个元素:); for(i = 0; ii ++){stat= Pop(S,e); printf(%3dn,e);}return0;}


------分隔线----------------------------