停车场管理系统——求帮忙解决问题

这里写自定义目录标题


#include
#include
#include
#include
#include
typedef struct{
int car_number;
int car_time;
}car_infor;//车牌和时间
typedef struct{
car_infor *base;
car_infor top;
int stacksize;//当前已经分配的存储空间,以元素为单位
int i;
}SqStack;//定义栈停车场车辆信息
typedef struct QNode{
int car_number;
struct QNode
next;
}QNode,*QueuePtr;//模拟车站

typedef struct{
QueuePtr front,rear;
int j;
}LinkQueue;//定义队列(车场外的便道)

void InitStack(SqStack s,int n)
{
//构造一个空栈(车站)
s->base=(car_infor
)malloc(n*sizeof(car_infor));
if(!s->base) exit (0);//存储分配失败
s->top=s->base;
s->stacksize=n;
s->i=0;

}//InitStack

void Push(SqStack *s,int num,int time)
{
//元素进栈
if((s->top-s->base)>(s->stacksize))//栈满
return;
s->top->car_number=num;
s->top->car_time=time;
s->top++;
s->i++;

}//Push

void Pop(SqStack *s,int *num,int *time)
{
//元素出栈
if(s->top==s->base)
return ;
*num=(s->top-1)->car_number;
*time=(s->top-1)->car_time;
s->top–;
s->i–;

}

void InitQueue(LinkQueue *Q)
{
//初始化队列
Q->front=Q->rear=(QueuePtr)malloc(sizeof(QueuePtr));
if(!Q->front) exit(0);
Q->front->next=NULL;
Q->j=0;

}

void EnQueue(LinkQueue *Q,int num)
{
//元素出列
QNode *p;
p=(QueuePtr)malloc(sizeof(QueuePtr));
if(!p) exit(0); //存储空间分配失败
p->car_number=num;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
Q->j++;
}
void DeQueue(LinkQueue Q,int num)
{
//若队列不为空,删除之后为空列表
QNode *p;
if(Q->frontQ->rear) return ;
p=Q->front->next;
*num=p->car_number;
Q->front->next=p->next;
if(Q->rear
p)
Q->rear=Q->front;//删除之后为空列表的情况

Q->j--;

}

int isExistS(SqStack* s,int num)
{ //判断车辆是否到达车库
car_infor *p;

p=s->base ;
while(ptop )
{
if(p->car_number==num)
return 1;
else
p++;
}
return 0;
}

int isExistQ(LinkQueueQ,int num)
{// 判断车辆是否到达便道
QNode
p;

if(Q->j ==0)
	return 0;
p=Q->front->next;
while(p!=NULL)
{
	if(p->car_number ==num)
		return 1;
	else
		p=p->next;
}
return 0;

}

main()
{
int price,num,time,n,e1,e2;
int exit_stack,exit_queue;
char infor;
car_infor *p,*s;
SqStack stack1,stack2;//stack1为停车场,stack2为零时停靠站
LinkQueue Q;//Q为便道

printf("请输入停车场能够停的最多的车辆数目:\n");
scanf("%d",&n);
InitStack(&stack1,n);
InitStack(&stack2, n);
printf("请输入单位时间的停车价格:\n");
scanf("%d",&price);
InitQueue(&Q);
printf("请输入到达或者离去的信息(A:到达,D:离去,E:结束),车牌号,时刻:\n");
scanf("%c%d%d",&infor,&num,&time);
while(infor!='E')
{  
	switch(infor)
	{
	case 'A':
		 exit_stack=isExistS(&stack1,num);
		 exit_queue=isExistQ(&Q,num);//判断车牌号为num的是否在停车场内或者便道内
		 if(!exit_stack&&!exit_queue)
		 {
			 if(stack1.top-stack1.basecar_number!=num;p--)
		{
		}//查找要离开的车辆是不是在停车场内
		if(p==stack1.base-1)

		 printf("停车场内没有车牌为%d的车\n",num);
		else
		{
			for(s=stack1.top-1;s!=p;s--)//在它之后的汽车为要离开的汽车让路
			{
				Pop(&stack1,&e1,&e2);
				Push(&stack2,e1,e2);
			}
			Pop(&stack1,&e1,&e2);//汽车离开
			if(time

printf(“结束\n”);

}
停车场管理系统——求帮忙解决问题_第1张图片
停车场管理系统——求帮忙解决问题_第2张图片
本应该停在3号位的车却停在了2号位,把3号位的车挤掉了

你可能感兴趣的:(c#,数据结构)