汽车在停车场内进出是按照栈的运算方式来实现的,先到的先进停车场;停车场的汽车离开停车场时,汽车场内其它汽车为该辆汽车让路,也是按栈的方式进行;汽车在便道上等候是按队列的方式进行的。因此,将停车场设计成一个栈,汽车让路也需要另一个栈来协助完成,汽车进出便道用队列来实现。
本设计,栈采用顺序栈结构,队列用链式存储结构。

#include <bits/stdc++.h>using namespace std;#define  stacksize  10
typedef  struct  sqstack
{int  data[stacksize];int  top;
} SqStackTp;typedef struct  linked_queue
{int  data;struct  linked_queue  * next;
} LqueueTp;typedef  struct
{LqueueTp  *Front,  *Rear ;
} QueptrTp;QueptrTp Q;
void InitStack(SqStackTp &s)
{s.top=-1;
}void InitQueue(QueptrTp &Q)
{Q.Front=Q.Rear=new LqueueTp;Q.Front->next=NULL;
}void EnQueue(QueptrTp &Q,int num)//进便道
{LqueueTp *p=new LqueueTp;p->data=num;p->next=NULL;Q.Rear->next=p;Q.Rear=p;cout<<num<<" 号车进入便道"<<endl;system("pause");
}int OutQueue(QueptrTp &Q)//出便道
{LqueueTp *p;int num;if(Q.Front==Q.Rear)return -1;//便道无车p=Q.Front->next;num=p->data;Q.Front->next=p->next;if(Q.Rear==p)Q.Rear=Q.Front;delete p;return num;
}
void InPark(SqStackTp &Park,int num)//进停车场
{if(Park.top==stacksize-1){cout<<"进库失败!停车场车辆已满,请进入便道等候"<<endl;system("pause");EnQueue(Q,num);return;}Park.top++;Park.data[Park.top]=num;cout<<"车辆 "<<num<<" 号已经进入停车场"<<endl;cout<<"停车场还剩余 "<<stacksize-Park.top-1<<" 个位置"<<endl;system("pause");
}void InTPark(SqStackTp &Park,int num)//进临时停车场
{if(Park.top==stacksize-1){cout<<"进库失败!临时停车场车辆已满,请进入便道等候"<<endl;system("pause");return;}Park.top++;Park.data[Park.top]=num;cout<<"车辆 "<<num<<" 号已经进入临时停车场"<<endl;cout<<"临时停车场还剩余 "<<stacksize-Park.top-1<<" 个位置"<<endl;system("pause");
}
void OutPark(SqStackTp &Park,SqStackTp &TPark,int num)//出临时停车场
{int flag=0;if(Park.top==-1){cout<<"ERRO";system("pause");return;}int n=Park.top;for(n; n>-1; n--)if(Park.data[n]==num)flag=1;if(!flag){cout<<"出库失败!车库无"<<num<<"号车!"<<endl;system("pause");return;}for(Park.top; Park.top>-1; Park.top--){if(Park.data[Park.top]==num){Park.top--;break;}elseInTPark(TPark,Park.data[Park.top]);}cout<<"\n"<<num<<"号车辆出库完成,其他车辆回车库"<<endl<<endl;system("pause");for(TPark.top; TPark.top>-1; TPark.top--)InPark(Park,TPark.data[TPark.top]);for(Park.top; Park.top<stacksize;)//便道车进入停车场{int Qnum=OutQueue(Q);if(Qnum==-1)//便道无车return;InPark(Park,Qnum);if(Park.top==stacksize-1)//停车场满return;}
}void SeePark(SqStackTp Park)
{if(Park.top==-1)cout<<"暂无车辆!"<<endl;for(Park.top; Park.top>-1;){cout<<"->"<<Park.data[Park.top]<<"号车";Park.top--;}cout<<"\n";system("pause");
}void SeeQueue(QueptrTp Q)
{if(Q.Front==Q.Rear){cout<<"暂无车辆!"<<endl;system("pause");return;}LqueueTp *p=Q.Front->next;while(p!=NULL){cout<<"->"<<p->data<<"号车";p=p->next;}cout<<endl;system("pause");
}
void Order()
{int x,num;SqStackTp Park,TPark;InitQueue(Q);InitStack(Park);InitStack(TPark);while(1){cout<<"*说明:\n*0-退出\n*1-进停车场\n*2-出停车场\n*3-查看停车场车辆情况\n*4-查看便道车辆情况\n";cout<<"请输入指令:";cin>>x;switch(x){case 0:return;break;case 1:cout<<"请输入入库车号:";cin>>num;InPark(Park,num);system("cls");break;case 2:cout<<"请输入出库车号:";cin>>num;OutPark(Park,TPark,num);system("cls");break;case 3:SeePark(Park);system("cls");break;case 4:SeeQueue(Q);system("cls");break;default:cout<<"请输入有效数字(0-4)!!!!!"<<endl;system("pause");system("cls");}}
}int main()
{Order();return 0;
}
//小绵杨Yeanling

数据结构课程设计(二)停车场管理:便道-队列,停车场-栈,临时停车场-栈。相关推荐

  1. 数据结构课程设计----停车场管理系统(栈和队列)

    题目: 设停车场(如下图1所示)内只有一个可停放几量汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北 ...

  2. 停车场管理c语言课程设计,数据结构课程设计-停车场管理

    #include #include /** * 具体要求请看C语言数据结构课程设计 3.4.1:停车场管理系统 * 思路: * 进: * 1. 车按照顺序先进去通道(入队列) * 2. 给出指定,让先 ...

  3. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  4. 大二上---数据结构课程设计

    课程设计 本次课设共五道题,通过查资料完成 (一)线性结构(链表)题目 joseph环 任务:编号是1,2,-,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数).一开始任选一个正整数作为 ...

  5. 计算机课程设计收费管理系统,数据结构课程设计报告---收费停车场管理系统

    数据结构课程设计报告---收费停车场管理系统 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 XX大学计算机与电子 信息学院< ...

  6. python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)

    ##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...

  7. 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)

    前言 接上文的介绍,本文将主要介绍如何生成随机迷宫,在网上找到的资源也比较多,这里我选取了随机 Prim 算法生成迷宫,选择这个算法的理由如下: 算法思想简单,易于实现 生成的迷宫比较自然,不会出现明 ...

  8. 2017大二学年 数据结构课程设计-校园十大优秀青年评比

    南 通 大 学   数据结构课程设计报告   姓    名:   班    级: 物联网162 学    号:   指导老师: 杭月琴 选   

  9. C/C++《数据结构课程设计》任务书[2022-12-27]

    C/C++<数据结构课程设计>任务书[2022-12-27] <数据结构课程设计>任务书 一.任务总体安排: 班级 设计时间 地点 指导老师 21软件开发 17周每周一至周五五 ...

最新文章

  1. 【CSON原创】HTML5游戏框架cnGameJS开发实录(外部输入模块篇)
  2. 使用Powershell将PST导入Exchange 2007
  3. mysql一: 登陆
  4. CDH5.16.2下载安装
  5. linux 内核字符驱动char_dev源码分析
  6. 63. 不同路径 II(JavaScript)
  7. sql 查询数据库索引重建_不良的数据库索引– SQL查询性能的杀手–建议
  8. 【资讯】时间的朋友2017跨年演讲全回顾
  9. 关于offsetX、layerX、clientX、screenX以及pageX
  10. 字符串分隔StringUtils.delimitedListToStringArray
  11. word 如何删除边框黑线
  12. 拥挤城市小程序如何玩转会展营销?
  13. 公司企业邮箱怎么群发邮件?如何在工作中脱颖而出
  14. 马克思主义与社会科学方法论
  15. pd 生成mysql 脚本_powerdesigner 生成数据库脚本
  16. Linux下的鼠标手势软件easystroke
  17. win7设置WiFi热点部分问题解决方案
  18. 大可乐android 4.3刷机包,大可乐3手机MC003线刷刷机教程_大可乐MC003线刷rom系统包...
  19. 华为老机型能升级鸿蒙吗,华为老款机型哪些可以升级鸿蒙系统-华为老款机型盘点...
  20. 新一线城市年轻人漂流图鉴:逃离北上广深,很多人依旧感到迷茫

热门文章

  1. Python爬虫(三)Beautiful Soup 实战,爬取前程无忧网站
  2. 欧系、日系 PLC 输入输出规格以及接线区别
  3. 15个必知的Mysql索引失效场景,别再踩坑了
  4. kinect 2.0安装与入门使用
  5. Guitar Pro8吉他软件主要功能详解及安装教程
  6. python可以写什么视觉特效_星球大战视觉特效背后的功臣——Python
  7. 移动梦网MISC1.6正反向订购/取消
  8. 从flv文件中提取音频并存储为mp3格式
  9. 为什么很多企业都会选择微博营销呢?
  10. DSL element ‘useProguard‘ is obsolete and will be removed soon. Use ‘android.enableR8‘ in gradle.pro