限定10辆车同时进入(链表)
{
车牌
车型
颜色
VIP等级(随机值,,,是否重复的问题)
}
【1】{调用一次函数可以给十个链表节点赋值,但链表的长度不一定就十个,再进需要在调用一次进入函数,接着原来额的后面,知道满,或者车不够};创建一个足够长的表(定死了),进车就是修改哪些没有数据的节点的数据,(十层,每层可以停十辆车)
【2】根据VIP等级进行先后排序后进场(结构体里面可以定义一个等级)(两种排序算法);
【3】出场次序要求先进先出(队列实现,在创建一个队列用来按先后输入顺序排,可以一开始就创建);数据同步的问题;
【4】要求车在停车场期间,有查询车辆信息的功能(进入时间 VIP等级 车位号);
【5】要求可以直接令一辆车消失(链表以及对应的队列数据清除);

/*****************************************************
copyright (C), 2014-2015, Jinling Institute of Tecnology
File name:2.c
Author: Zhang.Y.F  Version:0.1    Date: 2018-01-16 20:25
Description:
Funcion List:
*****************************************************/#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef struct
{char name[10];int vip;int xh; //车的入场序号
}Car;Car cars[10];//用于存放暂时的是车辆,后面用于排序
typedef struct
{Car car[100];//100个车为,数组中的元素不用排序直接放入队列中int front;//对头int rear;
}GD;typedef struct Node//定义一个结构体用来存放车辆信息,车牌号,进入时间等
{Car car;int flag;//用来辨别当前节点内有没有车int num;struct Node *next;}Node,*LinkList;void Create(LinkList L)//创建一个有100个元素的链表,长度限定了,后面也不再改变(传的是二极指针)
{char name[10]={'\0'};LinkList p,s;int i=0;p=L->next=(LinkList)malloc(sizeof(Node));//给第一个节点初始化p->flag=0;int j=0;strcpy(p->car.name,name);p->car.xh=0;p->car.vip=0;p->num=1;i=1;while(i<=100){s=(LinkList)malloc(sizeof(Node));//给接下来的99个节点初始化strcpy(L->car.name,name);//对车的操作s->car.xh=0;s->car.vip=0;s->flag=0;//用来辨别当前节点内有没有车(s->num)++;s->next=p->next;//尾插p->next=s;p=s;i++;//地I个节点}
}void IntCar(Car cars[],int ci)//先把所有车的信息输入数组当中,然后数组中的元素挨个拷贝到队列中去
{int i;//第i层for(i=0;i<10;i++){printf("请输入车牌号\n");scanf("%s",cars[i].name);//车牌号cars[i].vip=rand()%(10-1)+1;//随机的VIP等级0-9cars[i].xh=ci*10+i+1;}return;
}
void copy(Car *A,Car *B)//将B车的信息完全复制给A车;址传递
{strcpy(A->name,B->name);A->vip=B->vip;A->xh=B->xh;return;
}
void EnQueue(GD *Q,Car C[])//队列上面已经创建好,用来自然顺序存放进来的车
{if((Q->rear+1)%100==Q->front){printf("停车场已满\n");return;}else{int j=0;while(j<10)//从当前的队尾依次存放测车辆的信息{copy(&(Q->car[Q->rear]),&(C[j]));Q->rear=(Q->rear+1)%100;//尾指针指向下一个j++;}}return;
}
void swap(Car *A,Car *B)//交换A,B车的内容
{Car* temp=(Car *)malloc(sizeof(Car));//中间变量copy(temp,A);copy(A,B);copy(B,temp);return;
}
void BubbleSort(Car C[],int n/*数组长度*/)//冒泡排序,大的在前
{int i,j,flag;flag=1;for(i=0;i<n-1&&flag;i++){flag=0;//标志着是否排过序了for(j=n-2;j>=i;j--)//先把所有车的信息输入数组当中,然后数组中的元素挨个拷贝到队列中去{if(C[j].vip<C[j+1].vip){swap(&(C[j]),&(C[j+1]));flag=1;}}}
}
void SelectSort(Car C[],int n)//选择排序,派出vip等级大小排序
{int i,j,max;for(i=0;i<n-1;i++){max=i;for(j=i+1;j<=n-1;j++)//找出i到n-1中最大元素所在位置{if(C[max].vip<C[j].vip)max=j;}if(i!=max)//如果i不是最大元素所在位置,则将他们的值交换swap(&C[i],&C[max]);}
}void ruku(LinkList L,Car C[])//将已排序的数组按照顺序一个个的复制内容到链表中去
{LinkList p;p=L->next;int i=0;while(p->flag!=0&&p!=NULL)//遍历到第一个空车位,或者车库满{p=p->next;}//思考一个问题,后来有车出库了,可是他还是要10个一起进来if(p==NULL){printf("车库满了\n");return;}while(p&&p->flag==0&&p->num%10!=1)//遍历到10的整数倍后一个{p=p->next;}if(p==NULL){printf("车库满了\n");return;}if(p&&p->flag==0&&p->num%10==1)//用来从10的整数倍后一个开始{while(i<10&&p!=NULL){copy(&(p->car),&(C[i]));p->flag=1;p=p->next;i++;}if(p==NULL){printf("车库满了\n");return;}}return;
}
int Length(LinkList L)//求总长度
{LinkList p=L->next;int count=0;while(p){if(p->flag!=0)count++;p=p->next;}return count;
}int Lengthi(LinkList L,int i)//求每一层长度
{LinkList p=L->next;int count=0;int n=0;int m=0;for(m=0;m<10*(i-1);m++)p=p->next;while(n<10&&p){if(p->flag!=0)count++;p=p->next;}return count;
}
void PrintC(Car *C)
{printf("车牌号%s\n",C->name);printf("车的vip等级%d\n",C->vip);
}
//再谢一个查询车来嗯信息的函数
Car* Res(LinkList L,char name[])
{LinkList p=L->next;Car *C=(Car *)malloc(sizeof(Car));while(p&&strcmp(p->car.name,name))p=p->next;if(p==NULL){printf("车库中没有这辆车\n");return;}if(strcmp(p->car.name,name)==0){printf("找到了\n");//printf("调试专用112\n");copy(C,&(p->car));//这里的car是一个车的结构体/*strcpy(C->name,name);printf("调试专用112\n");C->vip=p->car.vip;C->xh=p->car.xh;*/printf("调试专用112\n");}return C;
}PrintList(LinkList L)//打印出当前车库中所有车的信息
{printf("目前车库中共有%d辆车\n",Length(L));LinkList p=L->next;int i=1;printf("车库共有%d辆车\n",Length(L));while(i<10){int j=0;printf("第%d层车库共有%d辆车\n",i,Lengthi(L,i));while(j<10&&p&&Lengthi(L,i)){if(p->flag){printf("%c车位有车,车辆信息如下\n",'A'+j);printf("车牌号%s\n",p->car.name);printf("车的VIP等级%d\n",p->car.vip);}elseprintf("%c车位无车\n",'A'+j);p=p->next;j++;}i++;}
}
//初始化一个车
void DeC(Car *C)
{strcpy(C->name,"\0");C->vip=0;C->xh=0;printf("初始化成功\n");return;
}
Car* chuku(GD *Q)//从对队列头出库一辆车,返回车辆的信息,用于后面的链表中削去相同的车
{Car *C=(Car *)malloc(sizeof(Car));copy(C,&(Q->car[Q->front]));printf("车辆出库\n");printf("出库车辆信息如下\n");printf("车牌号%s\n",Q->car[Q->front].name);printf("车的VIP等级%d\n",Q->car[Q->front].vip);DeC(&(Q->car[Q->front]));Q->front=(Q->front+1)%100;return C;
}
//些一个函数用来取出队列中的元素、
void DeD(GD *Q,Car *C)
{int i=Q->front;while((i+1)%100!=Q->rear){if(strcmp(Q->car[i].name,C->name)==0){DeC(Q->car);printf("队列中同样删除成功\n");break;}i++;}return;
}
void DeL(LinkList L,Car *C/*用来确定车的名字*/)//从链表中删除一辆车
{LinkList p=L->next;while(p&&strcmp(p->car.name,C->name)){p=p->next;PrintList(L);}if(strcmp(p->car.name,C->name)==0){DeC(&(p->car));p->flag=0;printf("删除成功\n");}
}
int main(int argc, char **argv)
{LinkList L;Create(L);int a;GD Q;Q.rear=Q.front=0;printf("*******************************欢迎来到停车场**********************************\n");printf("*******************************请输入你要干的事情*****************************\n");printf("输入1:停车  输入2:找车 输入3: 出库 输入4:删除车 输入5:打印所有 输入6:退出系统\n");int ci=1;char name[10];Car *C;while(1){printf("调试专用\n");scanf("%d",&a);getchar();switch(a){//printf("调试专用\n");case 1: {IntCar(cars,ci);//先安顺序给数组赋值ci++;EnQueue(&Q,cars);//数组的元素原封不动的赋给队列BubbleSort(cars,10);//按照vip值排序ruku(L,cars);//排完序的数组元素赋给链表break;}case 2:{printf("请输入你想要查找的车的车牌号\n");scanf("%s",name);C=Res(L,name);PrintC(C); //找出那两车并打印出车辆的信息   break;}case 3:{//Car *C;C=chuku(&Q);//从对头出库一辆车DeL(L,C);//删去链表中对应的车printf("出库成功\n");break;}case 4:{printf("请输入你想要删除的车的车牌号\n");scanf("%s",name);C=Res(L,name);DeL(L,C);DeD(&Q,C);break;}case 5:PrintList(L);break;case 6:exit(1);break;}}return 0;
}

停车场进出库系统(链表和队列)链表要按照VIP等级从大到小(简易版)相关推荐

  1. 二级vb笔试题库__全国计算机等级考试,XYZ计算机等级考试题库系统(二级VB)

    这是XYZ计算机等级考试题库系统(二级VB),是基于全国计算机等级考试二级vfp大纲而开发的一款模拟考试软件,该软件具有自动计时.随机抽题.全真模拟.精选习题.详尽解析等功能,精选了近两年全国计算机等 ...

  2. 计算机等级2级考试题库软件,XYZ计算机等级考试题库系统(二级Foxbase)

    这是XYZ计算机等级考试题库系统(二级Foxbase),是基于全国计算机等级考试二级FoxBase大纲而编写的一款模拟考试软件,收录了近两年全国计算机二级foxbase题库,拥有模拟考试和分类检索两大 ...

  3. 第7周项目实践2.1 用只有尾节点指针rear的循环单链表实现队列算法库

    //用只有尾节点指针rear的循环单链表作为队列存储结构,其中每个节点的类型为LinkNode,rear指针用于唯一标识链队 typedef struct LinkNode {int date;Lin ...

  4. 链表,队列,堆栈的区别

    链表,队列,堆栈的区别 1.栈是个有底的口袋,像袜子. 队列是没底的口袋,像通心粉. 所以:栈的特点是先进后出,队列的特点是先进先出. 2.主要区别是适用的地方不一样,      链表实际上可以认为是 ...

  5. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  6. C day18 高级数据表示(链表,队列)

    这是C primer的最后一章了,前面已经学习了怎么创建变量,结构,数组,指针,会写函数,总之,把C作为工具层面的知识已经学完了,但是对于编程之路,这才算走完第一步,因为对于写程序最重要的是学习如何表 ...

  7. 408考研数据结构与算法之数组、链表、队列、栈知识点和算法详细教程(更新中)

    第一章:数据结构与算法概述 因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它. 数据结构是计算机软考.计算机等级考试等相关考试的必考内 ...

  8. Go 学习笔记(80)— Go 标准库 container/list(单链表、双链表)

    列表是一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间的关系.列表有多种实现方法,如单链表.双链表等. ​ 在 Go 语言中,将列表使用 container/list 包来实现,内部 ...

  9. 基于链表实现队列(基于Java实现)

    title: 基于链表实现队列(基于Java实现) tags: 链表 队列 基于链表的队列实现方法的原理: 基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针.它 ...

最新文章

  1. python获取路径下所有图片:
  2. [转]MySQL实现分页查询
  3. 为啥不能用uuid做MySQL的主键!?
  4. `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
  5. 6.MySQL图形化工具的使用
  6. sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行
  7. 200个模块,怎么用有线的方式进行组网通信
  8. 2020年秋计算机科学导论,南开大学《主干课1-计算机科学导论》2020秋主干课考试...
  9. 记一次生成唯一ID的问题
  10. Tensorflow入门--图与会话
  11. 基于Opencv的手写字识别
  12. python批量复制文件夹下所有文件_python定时复制远程文件夹中所有文件
  13. mfc 子窗体 按钮不触发_python项目实战:pyQT5 实现窗体之间传值
  14. 使用VGG16.npy文件载入权重
  15. @click.prevent.native作用
  16. 【Java加密】JCA体系结构
  17. 阿拉丁2021年度小程序白皮书发布,凡泰极客 FinClip 技术再度入选(内附完整白皮书下载)
  18. 通过js引入本地图片地址
  19. 三次样条(Cubic Spline)的C++实现以及可视化
  20. Arduino 调用Stepper库驱动28BYJ-48步进电机,电机振动不转、无法反方向转的解决办法

热门文章

  1. 论文阅读:Self-Supervised Video Representation Learning With Odd-One-Out Networks
  2. 移动迷宫——拼图游戏
  3. 你家路由器还在闲置吗?快拿过来刷不同固件系统,做wifi放大器不香么?让家里处处有网。
  4. 6月8日14:00,温昱谈“软件架构设计智慧之旅”
  5. 3dmax:3dmax三维VR渲染设置之高级灯光渲染(经典案例—VR灯光制作直行灯槽效果)图文教程
  6. “中国农技推广信息服务平台”能否满足大众农业技术需求?
  7. 请教,如何从file的fullname(string类型)获取file对象?
  8. JS获取url最后一个字段
  9. Keil C51快速建立项目小技巧。
  10. (转)高人请进-由八卦太极图意淫联想到外星人的宇宙飞船