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

📄 停车场管理(标准).txt

📁 管理停车场的模拟程序
💻 TXT
字号:
#include"stdio.h"
#include"stdlib.h"
//#include <iostream.h> 

#define price 5

int scount=0;
int Qcount=0;

struct bus
{
	int number;
	int time;
};

typedef struct
{
	struct bus data[100];
	int *base;
	int *top;
	int stacksize;
}stack;

typedef struct QNode
{
	char data;
	struct QNode *next;
}QNode,*LinkQueueNode;

typedef struct
{
	LinkQueueNode front;
	LinkQueueNode rear;
}LinkQueue;


int Initstack(stack &s)
{
  s.base=(int*)malloc(100*sizeof(int));
  if(!s.base)exit(0);
  s.top=s.base;
  s.stacksize=100;
  return 1;
}

int initQueue(LinkQueue &Q)
{
	Q.front=Q.rear=(LinkQueueNode)malloc(sizeof(LinkQueueNode));
	if(!Q.front)exit(-1);
	Q.front->next=NULL;
	return 1;
}

int IsEmpty(stack s)
{
    if(s.top==s.base)return 1;
	return 0;
}

int Isempty(LinkQueue Q)
{
	if(Q.front==Q.rear)return 1;
	return 0;
}

void push(stack &s,int e)
{
	if(s.top-s.base>=s.stacksize)
	{
		s.base=(int*)realloc(s.base,(s.stacksize+10)*sizeof(int));
		if(!s.base)exit(0);
		s.top=s.base+s.stacksize;
		s.stacksize+=10;
	}
	*s.top++=e;
}

int EnQueue(LinkQueue &Q,int e)
{
	LinkQueueNode p;
	p=(LinkQueueNode)malloc(sizeof(QNode));
	if(!p)exit(-1);
	p->data=e;
	p->next=NULL;
	Q.rear->next=p;
	Q.rear=p;
	return 1;
}

int pop(stack &s,int &e)
{
	if(s.top==s.base)exit(0);
	e=*--s.top;
	return 1;
}

char DeQueue(LinkQueue &Q,int &e)
{
    LinkQueueNode p;
	if(Q.front==Q.rear)return 0;
	p=Q.front->next;
	e=p->data;
	Q.front->next=p->next;
	if(Q.rear==p)Q.rear=Q.front;
	free(p);
	return e;
}

void main()
{
	int t,e,i=1,num;
	char ch=' ',c;
	bool flag=1;
	stack s;
	Initstack(s);
	stack S;
	Initstack(S);
	
	LinkQueue Q;
	initQueue(Q);
	printf("请输入车场内能够停车的最大数量为:\n");
    
	scanf("%d",&num);
    ch=getchar();
    
    printf("请输入到达或离开、车牌号、车到达或离开的时间:\n");
	
	scanf("%c %d %d",&ch,&s.data[i].number,&s.data[i].time);
	
   while(ch!='E')
   {
       
	   if(ch=='A')                                //进车
	   {
		   if(scount<num)
		   {
              push(s,s.data[i].number);
		      ++scount;
		      printf("位置为:%d\n",scount);
		      printf("继续输入:\n");
		   }
		   else
		   {
			 EnQueue(Q,s.data[i].number) ;
			 ++Qcount;
			 printf("您停在了车道上的第%d个位置\n",Qcount);
		   }
	   }
	   else if(ch=='D')
		{
		   while(1)
		   {
			   pop(s,e);
			   push(S,e);
			   if(e==s.data[i].number)
			   {
				   flag=1;
				   break;
			   }
			   else flag=0;
		   }
		   if(flag)
		   {
                 t=s.data[i].time-s.data[e].time;
		            printf("停留的时间为:%d\n",t);
				      printf("应收取的费用为:%d\n",t*price);
				         printf("继续输入:\n");
						     pop(S,e);
			                   --scount;
				 while(!IsEmpty(S))
				 {
					 pop(S,e);
					 push(s,e);
				 }
				 if(!Isempty(Q))
				 {
					 DeQueue(Q,e);
					   push(s,e);
					      s.data[num+Qcount].time=s.data[i].time;
					         --Qcount;
					             ++scount;
				 }		 
		   }
		   else
			   printf("没有这辆车或您要的车还在车道中,请重新输入");
	   }
	    i++;
		c=getchar();
		scanf("%c %d %d",&ch,&s.data[i].number,&s.data[i].time);
	    
   }
}

⌨️ 快捷键说明

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