您的位置:首页 > 其它

大家帮我看看我的错误!可能会有点多··有写菜 不好意思·

2009-09-08 20:26 267 查看
#include <stdio.h>

#define TURE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define STACK_INIT_SIZE 5;

#define STACKINCREMENT 2;

typedef int car1;

typedef int car2;

typedef struct

{

car *fcar;

car *lcar;

int stacksize;

}SqStac;//停车场

typedef struct QNode

{

car date;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct

{

QueuePtr front;

Queueptr rear;

}LinkQueue;

typedef struct

{

int id;

int time;

}car1,car2;

int main()

{

int choice1;

char choice2;

float time,money;

SqStack S1;

SqStack S2;

LinkQueue Q;

car1 car1_A,car1_B,car1_C;

InitStack(&S1);

InitStack(&S2);

InitQueue(&Q);

while(choice1==1)

{

printf("欢迎来到XX停车场!/n");

printf("请按键选择:(A 进入停车场 D 离开停车场 E 退出系统)/n");

scanf("选择:%c",&choice2);

printf("/n");

switch(choice2)

case'A':

printf("请输入您的车牌ID和进入停车场时间/n");

scanf("ID:%d/n",&car1_A.id);

scanf("time:%d",&car1_A.time);

if(StackEmpty1(S1))

{

Push1(*S1,car1_A);//?

printf ("你的车牌是:%d/n进入时间是%d/n",car1_A.id,car1_A.time);

printf("是否继续? 请选择:1 继续 0 退出/n");

scanf("%d",choice1);

}

else

{

printf("停车场已满,请停入临时车道/n");

EnQueue(*Q, car1_A);

printf("是否继续? 请选择:1 继续 0退出/n");

scanf("%d",choice1);

}

case'D':

printf ("输入你要开走的车的车牌ID和时间/n");

scanf("ID:%d/n",&car1_B.id);

scanf("时间:",&car1_B.time);

while(!StackEmpty1(S1))

{

pop1(*S1,car_C);

if(car1_B.id==car1_C.id)

{

printf("欢迎下次再来!/n");

printf("你的车牌是%d",car1_B.id);

printf("你停入时间是%d/n 你离开时间是%d/n",car1_A.time,car1_B.time);

time=car1_B.time-car1_A.time;

money=time*2;

printf("你总共用时间%f/n",time);

printf("你需缴纳的停车费为%f",money);

}

else

push2(*S2,car_C);

}

while(!StackEmpty2(S2))

{

pop2(*S2,car_C);

push(*S1,car_C);

}

while(!QueueEmpty(Q)&&!StackFull1(S1))

{

DeQueue(&Q,&car_C);

if(!StackFull1(S1))

{

Push1(&S1,car_C);

}

}

printf("是否继续?1 继续 0退出");

scanf("%d/n",chioce1);

break;

case'E':

break;

}

return 0;

}

int InitStack(SqStack *S1)

{

(*S1).fcar=(car1 *) malloc(STACK_INIT_SIZE * sizeof (car));

if (!(*S1).fcar) exit (OVERFLOW);

(*S1).lcar=(*S1).fcar;

(*S1).stacksize=STACK_INIT_SIZE;

return OK;

}//构建空栈为停车场

int StackEmpty1(SqStack S1)

{

if (S1.fcar==S1.lcar)

return OK;

}

int StackFull1(SqStack S1) /*查看停车厂是否已满*/

{

if(S1.lcar-S1.fcar>=STACK_INIT_SIZE) /*若栈顶与栈底之差大于等于栈的最大存储空间,则已满*/

return OK;

else

return ERROR;

}

int Push(SqStack *S1,car e)

{

if ((*S1).lcar -(*S1).fcar >=(*S1).stacksize )

{

(*S1).fcar =(car *)realloc((*S1).fcar,((*S1).stacksize +STACKINCREMENT)*sizeof (car));

if (!(*S1).fcar )exit (OVERFLOW);

(*S1).lcar =(*S1).fcar+(*S1).stacksize ;

(*S1).stacksize +=STACKINCREMENT;

}

*(*S1).lcar ++=e;

return OK;

}//停入停车场

int Pop(SqStack *S1,car *e)

{

if((*S1).lcar ==(*S1).fcar)

return ERROE;

else

e=*--(*S1).lcar;//先把S.lcar减减,再减的S.lcar指针赋值为E

return OK;

}//出主停车场

/*``````````````````````````停车场````````````````````````````*/

/*````````````````````````````````备用停车道````````````````````````*/

int InitQueue(LinkQueue *Q)

{

(*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode));

if(!(*Q).front)exit(OVERFLOW);

(*Q).front->next=NULL;

return OK;

}//构建一条临时车道

int EnQueue(LinkQueue *Q, car1 e)

{

QueuePtr p;

p=(QueuePtr)malloc(sizeof(QNode));

if(!p)exit(OVERFLOW);

p->date=e;

p->next=NULL;

Q->rear->next=p;

Q->rear=p;

}//??

int DeQueue(LinkQueue *Q,car1 *e)

{

QueuePtr p;

if (Q->front==Q->rear)

return ERROR;

p=Q->front->next;

*e=p->date;

Q->front->next=p->next;//??

if (Q->rear==P)

Q->rear=Q->front;

free(p);

return OK;

}

int QueueEmpty(LinkQueue Q)

{

if (Q.front==Q.rear)

return OK;

else

return ERROR;

}

有个 “执行 cl.exe 时出错”

是不是逻辑有错误?

--------------------Configuration: 停车场 - Win32 Debug--------------------

C:/Documents and Settings/Administrator/桌面/学习资料/第三学期课程设计/完成作业/停车场/停车场.c(37) : error C2061: syntax error : identifier 'Queueptr'

C:/Documents and Settings/Administrator/桌面/学习资料/第三学期课程设计/完成作业/停车场/停车场.c(38) : error C2059: syntax

执行 cl.exe 时出错.

停车场.exe - 1 error(s), 0 warning(s)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐