
数据结构问题C语言版,下面的程序为什么不能运行?错在哪里?要怎么改?
#include<stdio.h>inte;typedefstruct{int*top;int*base;intstacksize;}intinitstack(sqsta...
#include <stdio.h>
int e;
typedef struct{
int *top;
int *base;
int stacksize;}
int initstack(sqstack s){
s.base=(int *)malloc(10*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base;
s.stacksize=10;
return 1;}
int push(int e){
if(s.top-s.base>=10){s.base=(int *)realloc(s.base,(s.stack+8)*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=8;}
*s.top++=e;
return 1;}
int pop()
{
if(s.top==s.base)return 0;
e=*--s.top;
return 1;}
main()
{int m;
for(int i=0;i<=3;i++)
{scanf("%d",&m);
push(m);}
for(i=0;i<=3;i++)
pop();} 展开
int e;
typedef struct{
int *top;
int *base;
int stacksize;}
int initstack(sqstack s){
s.base=(int *)malloc(10*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base;
s.stacksize=10;
return 1;}
int push(int e){
if(s.top-s.base>=10){s.base=(int *)realloc(s.base,(s.stack+8)*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=8;}
*s.top++=e;
return 1;}
int pop()
{
if(s.top==s.base)return 0;
e=*--s.top;
return 1;}
main()
{int m;
for(int i=0;i<=3;i++)
{scanf("%d",&m);
push(m);}
for(i=0;i<=3;i++)
pop();} 展开
4个回答
展开全部
#include <stdio.h>
#include<stdlib.h>
int e;
typedef struct
{
int *top;
int *base;
int stacksize;
} sqstack;
int initstack(sqstack *s)
{
s->base=(int *)malloc(10*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base;
s->stacksize=10;
return 1;
}
int push(sqstack *s,int e)
{
if(s->top-s->base>=10)
{
s->base=(int *)realloc(s->base,(s->stacksize+8)*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base+s->stacksize;
s->stacksize+=8;
}
*s->top++=e;
return 1;
}
int pop(sqstack *s)
{
if(s->top==s->base)
return 0;
e=*--s->top;
return 1;
}
int main()
{
sqstack s;
int m;
int i;
initstack(&s);
printf("请输入要入栈元素:\n");
for(i=0;i<=3;i++)
{
scanf("%d",&m);
push(&s,m);
}
printf("出栈元素顺序为:\n");
for(i=0;i<=3;i++)
{
pop(&s);
printf("%d\t",e);
}
printf("\n");
return 0;
}
帮你改好了,看一下吧,有问题还可以交流下!
#include<stdlib.h>
int e;
typedef struct
{
int *top;
int *base;
int stacksize;
} sqstack;
int initstack(sqstack *s)
{
s->base=(int *)malloc(10*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base;
s->stacksize=10;
return 1;
}
int push(sqstack *s,int e)
{
if(s->top-s->base>=10)
{
s->base=(int *)realloc(s->base,(s->stacksize+8)*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base+s->stacksize;
s->stacksize+=8;
}
*s->top++=e;
return 1;
}
int pop(sqstack *s)
{
if(s->top==s->base)
return 0;
e=*--s->top;
return 1;
}
int main()
{
sqstack s;
int m;
int i;
initstack(&s);
printf("请输入要入栈元素:\n");
for(i=0;i<=3;i++)
{
scanf("%d",&m);
push(&s,m);
}
printf("出栈元素顺序为:\n");
for(i=0;i<=3;i++)
{
pop(&s);
printf("%d\t",e);
}
printf("\n");
return 0;
}
帮你改好了,看一下吧,有问题还可以交流下!
展开全部
/*
修改后的,下面有结果
*/
#include <stdio.h>
# include "malloc.h"
# include "stdlib.h"
# define OVERFLOW -1
int e;
typedef struct
{
int *top;
int *base;
int stacksize;
}sqstack;////////////
int initstack(sqstack * s)
{
(* s).base=(int *)malloc(10*sizeof(int));
if(!(* s).base)
exit(OVERFLOW);
(* s).top=(* s).base;
(* s).stacksize=10;
return 1;
}
int push(sqstack * s,int e)//////////
{
if((* s).top-(* s).base>=10)
{
(* s).base=(int *)realloc((* s).base,((* s).stacksize+8)*sizeof(int));//////////
if(!(* s).base)
exit(OVERFLOW);
(* s).top=(* s).base+(* s).stacksize;
(* s).stacksize+=8;
}
*(* s).top++=e;
return 1;
}
int pop(sqstack * s)
{
if((* s).top==(* s).base)
return 0;
e=*--(* s).top;
return 1;
}
main()
{
sqstack s;
initstack(&s);
int m;
for(int i=0;i<=3;i++)
{
printf("请输入第%d个数据:",i+1);
scanf("%d",&m);
push(&s,m);
}
for(i=0;i<=3;i++)
{
pop(&s);
printf("%d ",e);
}
printf("\n");
}
/*
在vc++6.0中的输出结果:
------------------------
请输入第1个数据:1
请输入第2个数据:2
请输入第3个数据:3
请输入第4个数据:4
4 3 2 1
Press any key to continue
------------------------------
总结:
*/
修改后的,下面有结果
*/
#include <stdio.h>
# include "malloc.h"
# include "stdlib.h"
# define OVERFLOW -1
int e;
typedef struct
{
int *top;
int *base;
int stacksize;
}sqstack;////////////
int initstack(sqstack * s)
{
(* s).base=(int *)malloc(10*sizeof(int));
if(!(* s).base)
exit(OVERFLOW);
(* s).top=(* s).base;
(* s).stacksize=10;
return 1;
}
int push(sqstack * s,int e)//////////
{
if((* s).top-(* s).base>=10)
{
(* s).base=(int *)realloc((* s).base,((* s).stacksize+8)*sizeof(int));//////////
if(!(* s).base)
exit(OVERFLOW);
(* s).top=(* s).base+(* s).stacksize;
(* s).stacksize+=8;
}
*(* s).top++=e;
return 1;
}
int pop(sqstack * s)
{
if((* s).top==(* s).base)
return 0;
e=*--(* s).top;
return 1;
}
main()
{
sqstack s;
initstack(&s);
int m;
for(int i=0;i<=3;i++)
{
printf("请输入第%d个数据:",i+1);
scanf("%d",&m);
push(&s,m);
}
for(i=0;i<=3;i++)
{
pop(&s);
printf("%d ",e);
}
printf("\n");
}
/*
在vc++6.0中的输出结果:
------------------------
请输入第1个数据:1
请输入第2个数据:2
请输入第3个数据:3
请输入第4个数据:4
4 3 2 1
Press any key to continue
------------------------------
总结:
*/
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef struct那有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好乱呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询