第一次用堆栈实在不会帮我看看错在哪里啊啊
#include "stdio.h"
#include "stdlib.h"
#include "stack.h"
#define MAXSIZEPARK 2
#define MAXSIZETEMPLINE 2
#define COST 20
typedef struct
{
int ID;
int time;
char option;
}carinfo; //定义了车的类型
int main(void)
{
carinfo car,b;
SqStack parking,temp;
initstack(parking);
initstack(temp);
printf("||************ | 停 车 场 管 理 系 统 |*************||\n");
printf("||******************* | 说 明 |********************||\n");
printf("停车场可停放%d辆车! 便道可停放%d辆车! 停车每小时%d元!\n\n",MAXSIZEPARK,MAXSIZETEMPLINE,COST);
printf("||***************************************************||\n");
while(1)
{
printf("\n请输入A/D/E,车牌号,时刻:");
scanf("%c,%d,%d",&car.option,&car.ID,&car.time);
if(car.option=='e'||car.option=='E')
exit(0);
else
switch(car.option)
{
case 'a':
case 'A':
{
if(push(parking,&car)==0)
printf("success");
else
printf("车牌号为%d的车,%d时开进停车场!\n",car.ID,car.time);
}
break;
case 'd':
case 'D':
while(car.ID!=b.ID)
{
pop(parking,&b);
push(temp,&b);
}
}
}
return 0;
}
头文件。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
typedef struct
{
int *top;
int *base;
int stacksize;
}SqStack; //定义堆栈
void initstack(SqStack &s)
{
s.base=(int *)malloc(MAXSIZEPARK *sizeof(carinfo));
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=MAXSIZEPARK;
}
int push(SqStack &s,carinfo t)
{
if(s.top-s.base>=s.stacksize)
{
printf("停车场已满将车放到临时车道\n");
return 0;
}
else
{
*s.top++=*t;
return 1;
}
}
int pop(SqStack &s,carinfo &t)
{
if(s.base==s.top)
{
printf("停车场没有车\n");
return 0;
}
else
{
*t=*s.top--;
return 1;
}
}
错误代号。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(7): error C2143: syntax error : missing ')' before '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(7): error C2143: syntax error : missing '{' before '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(7): error C2059: syntax error : '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(7): error C2059: syntax error : ')'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(14): error C2143: syntax error : missing ')' before '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(14): error C2143: syntax error : missing '{' before '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(14): error C2059: syntax error : '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(14): error C2059: syntax error : ')'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(27): error C2143: syntax error : missing ')' before '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(27): error C2143: syntax error : missing '{' before '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(27): error C2059: syntax error : '&'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\stack.h(27): error C2059: syntax error : ')'
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\1.c(18): warning C4013: 'initstack' undefined; assuming extern returning int
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\1.c(36): warning C4013: 'push' undefined; assuming extern returning int
1>c:\users\傻娜\documents\visual studio 2010\projects\2222\2222\1.c(46): warning C4013: 'pop' undefined; assuming extern returning int
1>
[解决办法]
你应该把结构定义在一个头文件中,然后函数实现在一个源文件中,不要在头文件中写函数的实现代码
[解决办法]
从提示看问题出在stack.h
[解决办法]
- C/C++ code
#include "stdio.h"#include "stdlib.h"#include <stack>#define MAXSIZEPARK 2#define MAXSIZETEMPLINE 2#define COST 20typedef struct{ int *top; int *base; int stacksize;}SqStack; //定义堆栈typedef struct{ int ID; int time; char option;}carinfo; //定义了车的类型void initstack(SqStack &s){ s.base=(int *)malloc(MAXSIZEPARK *sizeof(carinfo)); if(!s.base)exit(1); s.top=s.base; s.stacksize=MAXSIZEPARK;}int push(SqStack &s,carinfo t){ if(s.top-s.base>=s.stacksize) { printf("停车场已满将车放到临时车道\n"); return 0; } else { //*s.top++=*t; return 1; }}int pop(SqStack &s,carinfo &t){ if(s.base==s.top) { printf("停车场没有车\n"); return 0; } else { //*t=*s.top--; return 1; }}int main(void){ carinfo car,b; SqStack parking,temp; initstack(parking); initstack(temp); printf("||************ | 停 车 场 管 理 系 统 |*************||\n"); printf("||******************* | 说 明 |********************||\n"); printf("停车场可停放%d辆车! 便道可停放%d辆车! 停车每小时%d元!\n\n",MAXSIZEPARK,MAXSIZETEMPLINE,COST); printf("||***************************************************||\n"); while(1) { printf("\n请输入A/D/E,车牌号,时刻:"); scanf("%c,%d,%d",&car.option,&car.ID,&car.time); if(car.option=='e'||car.option=='E') exit(0); else switch(car.option) { case 'a': case 'A': { if(push(parking,car)==0) printf("success"); else printf("车牌号为%d的车,%d时开进停车场!\n",car.ID,car.time); } break; case 'd': case 'D': while(car.ID!=b.ID) { pop(parking,b); push(temp,b); } } } return 0;}//真乱套啊。逻辑自己在看看,没有改逻辑
[解决办法]
int pop(SqStack &s,carinfo &t)
似乎又是一个抄严奶奶的伪C代码的可怜的孩纸
[解决办法]
你对比着看,不就能明白啦!~如果还看不明白,翻书吧!~基础要过关啊