读书人

第一次用堆栈实在不会帮小弟我看看错在

发布时间: 2012-07-29 15:26:14 作者: rapoo

第一次用堆栈实在不会帮我看看错在哪里啊啊
#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代码的可怜的孩纸


[解决办法]
你对比着看,不就能明白啦!~如果还看不明白,翻书吧!~基础要过关啊

读书人网 >C++

热点推荐