果汁堆游戏

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltconio.h & gt

# define max _ parking _ size 10//停车场最大停车数量。

#定义奖金10.00//每小时入住。

#定义真1

#定义假0

typedef结构堆栈

{

long pos[MAX _ PARKING _ SIZE];//存储车牌号

int time[MAX _ PARKING _ SIZE];//存储进站时间。

int点;//最后一辆车的位置指针

}栈;//定义堆栈-模拟停车场

typedef结构队列

{

int num//存储车牌号

struct queue * next//指向下一辆车

}排队;//定义队列-模拟停车场外

void InitStack(Stack *s)

{

s-& gt;点=-1;

}//初始化堆栈

Queue *InitQueue()//初始化队列

{

队列* q;

q=(Queue *)malloc(sizeof(Queue))。

q->;next = NULL

返回q;

}

Intstackpop (stack * s,long * i,int * j)//堆栈展开函数

{

if(s-& gt;point==-1)返回false

其他

{

* I = s-& gt;pos[s->;点];

* j = s-& gt;时间[s->;点];

s-& gt;点-;

返回true

}

}

Intstackpush (stack * s,long i,int j)//堆栈推送函数

{

if(s-& gt;point = = MAX _ PARKING _ SIZE-1)返回false

其他

{

s-& gt;点++;

s-& gt;pos[s->;点]= I;

s-& gt;时间[s->;点]= j;

返回true

}

}

Intqueuepop (queue * * qh,long * I)//出列函数

{

队列*临时;

if((* qH)-& gt;next==NULL)返回false

其他

{

temp =(* qH)-& gt;接下来;

(* qH)-& gt;next = temp-& gt;接下来;

* I = temp-& gt;num

免费(临时);

返回true

}

}

Int QueuePush(Queue **q,long i)//入队函数

{

队列*临时;

if((temp =(Queue *)malloc(sizeof(Queue)))= = NULL)返回false

其他

{

(* q)-& gt;next = temp

temp->;num = I;

temp->;next = NULL

* q = temp

返回true

}

}

int main()

{

int time,I,j,inStack,inQueue

长num

充电状态;

栈公园;

队列*H,*p,*temp,* temp 2;

h = init queue();

p = H;

system(" color 9E ");

init stack(& amp;公园);//初始化队列和堆栈

Printf ("* * * * * * * *这里是停车场管理程序,欢迎使用* * * * * * * * * * * * \ n ");

Printf("\n停车场最多可停放%d辆车,停放时间不得超过24小时。现在停车单价是%.2f元每小时\n ",MAX_PARKING_SIZE,有奖);

while(1)

{

inStack = in queue = 0;temp = H;

printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n”);

Printf("┃停车场管理系统┃\n”);

Printf("┃ (A或a)汽车到达和汽车查询┃\n”);

Printf("┃ (D或d)汽车离开┃\n”);

Printf("┃ (E或e)计划退出┃\n”);

printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n”);

printf(" \ n您的选择是:");

state = getche();

if(state = = ' A ' | | state = = ' A ' | | state = = ' D ' | | state = = ' D ')

{

printf(" \ n输入车牌号(号码):");

scanf("%ld ",& ampnum);

printf(" \ n输入到达或查询或离开的时间(24小时制,单位:小时):");

scanf("%d ",& amp时间);

}

if(state=='a'||state=='A ')

{

for(I = 0;我& lt= park.pointi++)

if(park.pos[i]==num)

{

inStack = 1;

打破;

}//在站内查找

for(j = 1;temp->;下一个!= NULLj++)

{

temp2 = temp

temp = temp 2-& gt;接下来;

if(temp-& gt;数字= =数字)

{

in queue = 1;

打破;

}

}//站外看

如果(堆叠)

printf(" \ n查询结果:输入的车辆已经在车站的%d位置停了%d个小时!\n ",i+1,time & gtpark.time[i]?time-park . time[I]:time+24-park . time[I]);

else if(inQueue)

printf(" \n查询结果:输入的轿厢已经在站外的%d位置等待\ n ",j);

其他

{

if(stack push(& amp;公园,数量,时间)= =假)

{

队列推送(& ampp,num);

printf(" \ n车站已满,车辆停在外面。\ n ");

}

elseprintf(" \ n车辆已成功进站!\ n ");

}//如果车辆到站,在站满时停在站外,否则进站。

}

else If(state = = ' d ' | | state = = ' d ')//如果你要离开,

{

for(I = 0;我& lt= park.pointi++)

if(park.pos[i]==num)

{

inStack = 1;

打破;

}//在站内查找

If(inStack)//如果在站内

{

Printf("发车的公交车在站内%d位置停了%d个小时,应缴纳%.2f元\n ",i+1,time & gtpark.time[i]?time-park . time[I]:time+24-park . time[I],time & gtpark.time[i]?(time-park . time[I])*奖:(time+24-park . time[I])*奖);

while(我& lt公园点)

{

park . pos[I]= park . pos[I+1];

park . time[I]= park . time[I+1];

i++;

}

park . point-;//删除出站的发车车辆。

如果(H-& gt;下一个!=空)

{

queue pop(& amp;h & amp;num);

如果(H-& gt;next = = NULL)p = H;

堆栈推进(& amppark,num,time);

printf(" \ n停车场有一个空位。在外面等着的车%d已经进站了!\n ",编号);

}//如果站外有车,就进站。

}

Else//不在站内。

{

for(I = 1;temp->;下一个!= NULLi++)

{

temp2 = temptemp = temp 2-& gt;接下来;

if(temp-& gt;数字= =数字)

{

in queue = 1;

打破;

}

}//弄清楚是不是站外。

如果(在队列中)

{

printf(" \n车在停车场外,不收费\ n ",I);

temp 2->;next = temp-& gt;接下来;

if(temp = = p)p = temp 2;

免费(临时);

}//站外

elseprintf(" \ n对不起,您输入了一个不存在的车牌号!\ n ");

}

}

else if(state=='e'||state=='E ')

{

printf(" \ n ");

打破;

}

elseprintf(" \ n输入错误!\ n ");

}

返回0;

}