/*停车场有100个车位,
当未停满100辆车时,允许车辆进入,车辆进入时记录车牌号和进入时间;
停满100辆车后,不允许车辆进入。
车辆开出时,显示车辆车牌号和车辆进入的时间。
*/
#include
#include
#include
#include
typedef struct
{
char carnum[10];
char time[10];
}elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}node,*linklist;
int init_link(linklist &la)//构造一个空的线性表
{
la=(node *)malloc(sizeof(node));
if(la==NULL) exit(-1);
la->next=NULL;
return 1;
}
int arrival(linklist &la,elemtype e)//车辆到达
{
linklist p,s;
p=la ;
while(p->next)
p=p->next ;
s=(linklist)malloc(sizeof(node));
if(!s) return 0;
s->data=e ;
s->next=p->next ;
p->next=s ;
return 1 ;
}
int leave(linklist &la,char *carnum1)//车辆离开
{
linklist p,q;
p=la;
while(p->next)
{
if(strcmp(p->next->data.carnum,carnum1)==0)
{
q=p->next ;
p->next=q->next ;
//printf("%s,%s\n",q->data.carnum,q->data.time);
free(q) ;
return 1;
}
p=p->next;
}
return 0;
}
void list(linklist &la)//车辆信息
{
linklist p;
p=la->next;
while(p)
{
printf("%s %s\n",p->data.carnum,p->data.time);
p=p->next;
}
}
int main()
{
linklist adr;
init_link(adr);
elemtype x;
int t=0;
char ch,carnum[10];
do
{
printf("1.车辆到达 \n");
printf("2.车辆离开 \n");
printf("3.车辆信息 \n");
printf("4.退出程序 \n");
printf("请选择:\n");
scanf("%c",&ch);
switch(ch)
{
case '1'://车辆到达
if(t
{
printf("输入车牌号和时间\n");
scanf("%s,%s",x.carnum,x.time);
if(arrival(adr,x)==1)
{
t=t+1;
printf("成功进入停车场\n");
}
else
printf("进入停车场失败\n");
}
else
printf("停车场已满\n");
break;
case '2'://车辆离开
if(t>0)
{
printf("输入车牌号\n");
scanf("%s",carnum);
if(leave(adr,carnum))
{
printf("车辆成功开出\n");
t=t-1;
}
else
{
printf("车辆没有成功开出,请重试!\n");
}
}
else
printf("停车场内没有车\n");
break;
case '3'://车辆信息
list(adr);
printf("%d\n",t);
break;
case '4'://退出主程序
return 0;
default:printf("没有该选项,请重新选择!\n");
}
}while(1);
return 0;
}