⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q.txt

📁 这是一个关于停车场的c语言程序代码
💻 TXT
字号:
 #include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 #define MAX 4/*车库容量*/
  typedef struct node
  {char num[10];
  }CarNode;/*车辆信息结点*/
 typedef struct NODE{
 CarNode *stack[MAX+1];
 int top;
 }SeqStackCar; /*模拟车站*/
 typedef struct car{
 CarNode *data;
 struct car *next;
 }QueueNode;
 typedef struct Node{
 QueueNode *head;
 QueueNode *rear;
 }LinkQueueCar; /*模拟通道*/
  void InitStack(SeqStackCar *); /*初始化栈*/ 
  int InitQueue(LinkQueueCar *); /*初始化便道*/
  int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/ 
  void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/
  void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ 
  void main()
   {SeqStackCar Enter,Temp;
  LinkQueueCar Wait;
  int ch;
  InitStack(&Enter); /*初始化车站*/ 
  InitStack(&Temp); /*初始化让路的临时栈*/
  InitQueue(&Wait); /*初始化通道*/
  printf("\n\n\n            题    目:模拟停车场管理问题\n\n");
  printf("            班    级:");
  printf("            姓    名:");
  printf("            指导老师:");
  printf("            日    期:");
  printf("\n\n\n\n\n-----------按任意键继续---------------");
  getch();
  clrscr();
  while(1)
  { printf("\n\n欢迎进入停车场管理系统,请选择您要的操作:\n");
  printf("\n1. 车辆到达");
  printf(" 2. 车辆离开");
  printf(" 3. 列表显示");
  printf(" 4. 退出系统\n");
  while(1)
  {scanf("%d",&ch);
  if(ch>=1&&ch<=4)break;
  else printf("\n请选择: 1|2|3|4.");
  }
  switch(ch)
  { case 1:Arrival(&Enter,&Wait);break; /*车辆到达*/
  case 2:Leave(&Enter,&Temp,&Wait);break; /*车辆离开*/
  case 3:List(Enter,Wait);break; /*列表打印信息*/
  case 4:exit(0); /*退出主程序*/
  default: break;
  }}}
  void InitStack(SeqStackCar *s) /*初始化栈*/ 
  { int i;
  s->top=0;
  for(i=0;i<=MAX;i++)
  s->stack[s->top]=NULL;}
  int InitQueue(LinkQueueCar *Q) /*初始化便道*/
  {Q->head=(QueueNode *)malloc(sizeof(QueueNode));
  if(Q->head!=NULL)
  {Q->head->next=NULL;
  Q->rear=Q->head;
  return(1);}
  else return(-1);}
  void PRINT(CarNode *p,int room) /*打印出站车的信息*/ 
  {int A1,A2,B1,B2;
  printf("\n离开车辆的车牌号为:");
  puts(p->num);
  free(p);
  }
  int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达*/ 
  { CarNode *p;
  QueueNode *t;
  p=(CarNode *)malloc(sizeof(CarNode));
  flushall();
  printf("\n请输入车牌号(例:A12345):");
  gets(p->num);
  if(Enter->top<MAX) /*车场未满,车进车场*/
  {Enter->top++;
  printf("\n车辆在车场第%d位置.",Enter->top);
  Enter->stack[Enter->top]=p;
  return(1);}
  else /*车场已满,车进便道*/
  { printf("\n该车须在便道等待!");
  t=(QueueNode *)malloc(sizeof(QueueNode));
  t->data=p;
  t->next=NULL; 
  W->rear->next=t;
  W->rear=t;
  return(1); }}
  void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)/*车辆离开*/
  { 
  int i, room;
  CarNode *p,*t;
  QueueNode *q;
  /*判断车场内是否有车*/
  if(Enter->top>0) /*有车*/ 
  { while(1) /*输入离开车辆的信息*/ 
  {printf("\n请输入车在车场的位置/1--%d/:",Enter->top);
  scanf("%d",&room);
  if(room>=1&&room<=Enter->top) break;}
  while(Enter->top>room) /*车辆离开*/
  {Temp->top++;
  Temp->stack[Temp->top]=Enter->stack[Enter->top];
  Enter->stack[Enter->top]=NULL;
  Enter->top--;
  } 
  p=Enter->stack[Enter->top];
  Enter->stack[Enter->top]=NULL;
  Enter->top--;
  while(Temp->top>=1)
  {Enter->top++;
  Enter->stack[Enter->top]=Temp->stack[Temp->top];
  Temp->stack[Temp->top]=NULL;
  Temp->top--;}
  PRINT(p,room);
  /*判断通道上是否有车及车站是否已满*/
  if((W->head!=W->rear)&&Enter->top<MAX) /*便道的车辆进入车场*/
  { q=W->head->next;
  t=q->data;
  Enter->top++;
  printf("\n便道的%s号车进入车场第%d位置.",t->num,Enter->top);
  W->head->next=q->next;
  if(q==W->rear) W->rear=W->head;
  Enter->stack[Enter->top]=t;
  free(q);}
  else printf("\n便道里没有车.\n");}
  else printf("\n车场里没有车."); /*没车*/ }
  void List1(SeqStackCar *S) /*列表显示车场信息*/
  {int i;
  if(S->top>0) /*判断车站内是否有车*/
  {printf("\n车场:");
  printf("\n 位置    车牌号\n");
  for(i=1;i<=S->top;i++)
  {printf(" %d ",i);
  puts(S->stack[i]->num);}} 
  else printf("\n车场里没有车");}
  void List2(LinkQueueCar *W) /*列表显示便道信息*/
  { QueueNode *p;
  p=W->head->next;
  if(W->head!=W->rear) /*判断通道上是否有车*/
  {printf("\n等待车辆的号码为:");
  while(p!=NULL)
  {puts(p->data->num);
  p=p->next;}}
  else printf("\n便道里没有车."); }
  void List(SeqStackCar S,LinkQueueCar W)
  {int flag,tag;
  flag=1;
  while(flag)
  {printf("\n请选择 1|2|3:");
  printf("\n1.车场\n2.便道\n3.返回\n");
  while(1)
  { scanf("%d",&tag);
  if(tag>=1||tag<=3) break;
  else printf("\n请选择 1|2|3:");
  }switch(tag)
  {case 1:List1(&S);break;   /*列表显示车场信息*/
  case 2:List2(&W);break;   /*列表显示便道信息*/
  case 3:flag=0;break;
  default: break;  }}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -