c语言顺序栈问题:顺序栈具有多个数据域,下面程序有什么错误?

来源:百度知道 编辑:UC知道 时间:2024/07/06 23:32:49
# include <stdio.h>
#include <malloc.h>

struct car{
int num;
int time;
}car_message;

typedef struct{
struct car *base;
struct car *top;
int stacksize;
}car_p;

car_p InitS(int n);
car_p InitTemp(int n);
car_p push_S(car_p *S,int b,int c);

void main()
{
int n,a,b,c;
float price;
car_p S,Temp;
scanf("%d%f",&n,&price);
S=InitS(n);
Temp=InitTemp(n);
scanf("%d%d%d",&a,&b,&c);

while(a!=0&&b!=0&&c!=0)
{
S=push_S(&S,b,c);

printf("%d %d\n",car_message.num,car_message.time);

}
}

car_p InitS(int n)
{
car_p S;
S.base=(struct car *)malloc(n*sizeof(car_message));
if(!S.base) printf("Error!\n");
S.top=S.base;
S.stacksize=n;
return S;
}

car_p InitTemp(int n)
{
c

car_p push_S(car_p *S,int b,int c)
{
S->top->num=b;
S->top->time=c;
return *S;
}
压栈的函数top指针没有增加,这样栈里永远就只有一个元素.

scanf("%d%d%d",&a,&b,&c);

while(a!=0&&b!=0&&c!=0)
{
S=push_S(&S,b,c);

printf("%d %d\n",car_message.num,car_message.time); //还有就是不明白你直接输出这句干嘛,把信息压到栈里了应该从栈中去信息输出啊,不过你没有写pop函数,如果像你这样输出的话,那么就应该一直输出0 0的(初始化的值)

scanf("%d%d%d",&a,&b,&c);//如果没错的话这里面的a应该是结束标志吧,那么如果要连续输入的话就必须加这句啊,不家的话要么就一个输不进去,要么就一直输入一样的bc死循环..
}