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

📄 paking_main.c

📁 演示停车场管理的C++算法。VC下编译通过。
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
#define N 10
#define price 1

typedef struct paking_car{
	int number[N];
	int time[N];
	int top;
}paking_car;//栈的建立和传递的语法我有点不清楚~

typedef struct waiting_car{
	int number;
	struct waiting_car *next;
}waiting_car,*waiting_carPtr;


void choice(void){
}

int P_full(paking_car a){
	if(a.top <= ( N - 1 ) )
		return 1;
	else
		return 0;
}

int P_empty(paking_car a){
}

int W_empty(waiting_carPtr *a){
	if(a == NULL)
		return 1;
	else
		return 0;
}

void P_push(paking_car *a){
	
	int number,time;

	printf("请输入进入停车场的车辆车牌号和到达时间:\n");
	scanf("%d%d",&number,&time);

	a->top++;
	a->number[ a->top ] = number;
	a->time[ a->top ] = time;
}

void W_push(waiting_carPtr a){

	waiting_carPtr node = (waiting_carPtr) malloc (sizeof (waiting_car));
	int number;

	printf("停车场已满,请输入进入候车场的车辆车牌号:\n");
	scanf("%d",&number);

	node->number = number;
	node->next = a;
	a = node;
}

void car_push(paking_car *a,waiting_carPtr b){
	waiting_carPtr cur = b;
	waiting_carPtr pre;
	int time;

	while(cur != NULL){
		pre = cur;
		cur = cur->next;
	}

	printf("请输入车辆进入停车场的时间:\n");
	scanf("%d",&time);

	a->top++;
	a->number[ a->top ] = cur->number;
	a->time[ a->top ] = time;

	free( cur );
	pre->next = NULL;
}

void P_print(paking_car * a){
}

void W_print(waiting_carPtr *a){
}

int number_check(paking_car * a,int *b){
	int number;
	int i;

	printf("请输入要离开停车场的车辆的车牌号:\n");
	scanf("%d",&number);

	*b = number;

	for(i = 0;i <= a->top;i++)
		if(a->number[ i ] == number)
			return 1;
		else
			return 0;
}

void leave(paking_car * a,paking_car * b,int c){
	int i,time;
	int flag = 0;

	for(i = 0;i <= a->top && flag == 0;i++){
		if(a->number[ i ] == c)
			flag = 1;
	}

	for(;a->top > i;a->top--){
		b->top++;
		b->number[ b->top ] = a->number[ a->top ];
		b->time[ b->top ] = a->time[ a->top ];
	}

	printf("请输入车子离开的时间:\n");
	scanf("%d",&time);
	printf("要离开的车辆车牌号为:%d\n",a->number[ a->top ] );
	printf("车子停留的费用为:%d\n",time - a->time[ a->top ] );
	printf("车子需要交纳的费用为:%d\n",( time - a->time[ a->top ] ) * price);

	for(;b->top >= 0;b->top--){
		a->number[ a->top ] = b->number[ a->top ];
		a->time[ a->top ] = b->time[ b->top ];
		a->top++;
	}
}


int main()
{
	paking_car a,b;
	waiting_carPtr head = NULL;
	char flag;
	int x;

	a.top = -1;
	b.top = -1; 
	
	choice();
	scanf("%c",&flag);

	while(flag != 'E'){
		if(flag == 'A'){
			if(P_full(a) != 0)
				P_push(&a);
			else
				W_push(head);
		}

			P_print(&a);
			w_print(*head);
		}
		if(flag == 'D'){
		
			if(number_check(&a,&x)){
				leave(&a,&b,x);
					if(!W_empty(head)){
						car_push(&a,head);
					}
			}
		else
			printf("输入错误,请重新输入\n");

		choice();
		scanf("%d",&flag);
	}

	return 0;
			
}

⌨️ 快捷键说明

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