果汁堆游戏
# 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;
}