数据结构课程设计《停车场管理系统》

合集下载

数据结构—停车场管理系统

数据结构—停车场管理系统

数据结构—停车场管理系统数据结构—停车场管理系统1.引言本文档描述了一个停车场管理系统的设计和实现。

停车场管理系统是一个用于管理停车场内车辆进出、计费等相关事务的系统。

该系统通过数据结构的应用实现了高效的车辆管理和计费功能。

2.系统概述2.1 目标停车场管理系统的目标是提供一个高效、准确和可靠的车辆管理和计费系统,使停车场管理人员能够更好地管理停车场内的车辆。

2.2 功能该系统的主要功能包括:●车辆进入管理:记录进入停车场的车辆信息,包括车牌号码、进入时间等●车辆离开管理:记录离开停车场的车辆信息,包括车牌号码、离开时间等,并计算相应的停车费用●停车位管理:记录停车场内所有车位的使用情况,包括已使用和空闲的车位信息●支付管理:根据停车时长计算停车费用,并提供支付功能●统计报表:停车场内车辆进出、停车时长、收入等相关统计报表3.系统设计3.1 数据结构选择为了实现停车场管理系统的高效运行,选择以下数据结构:●链表:用于管理车辆进出的顺序,支持快速插入和删除操作●哈希表:用于存储车辆信息,通过车牌号码作为键,快速检索和访问各个车辆的信息●栈:用于管理停车场内的车位,支持快速分配和释放车位●队列:用于统计报表时的数据存储和处理3.2 系统架构停车场管理系统的整体架构如下所示:●用户界面:提供用户操作界面,包括车辆进入、离开、支付以及查询等功能●车辆管理模块:负责处理车辆进入和离开的相关逻辑,包括记录车辆信息、计算停车费用等●停车位管理模块:负责管理停车场内车位的分配和释放,包括查找空闲车位、更新车位状态等●统计报表模块:负责停车场内各种统计报表,包括车辆进出统计、停车时长统计、收入统计等4.系统实现4.1 用户界面实现用户界面可以通过文本命令行交互或者图形用户界面来实现,具体实现方式根据实际需求决定。

4.2 车辆管理模块实现车辆管理模块可以通过链表来实现车辆进出的顺序管理。

每次车辆进入时,创建一个新的节点插入链表末尾;每次车辆离开时,从链表中删除对应节点。

《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_一、系统总体原则1.1、系统的安全性:停车场管理系统要求引入多重安全措施,确保其系统数据的安全,以防止非法黑客进行攻击;系统本身要具备安全保护机制,确保核心系统重要功能不能被破坏。

1.2、系统功能:停车场管理系统要具备通行证管理,车辆管理,收费管理,维修管理,系统权限控制和固定车位管理等多种功能。

1.3、系统数据管理:停车场管理系统要实现对用户信息,车辆信息,收费信息,维修信息和工作日志等数据的便捷管理;支持数据注入,报表输出,日志查询,备份恢复等。

二、系统数据结构2.1、用户信息结构:用户类型、用户名、密码、真实姓名、联系电话、优惠折扣比、优惠申请次数等2.2、车辆信息结构:车牌号、车牌颜色、停放位置、停放时间、收费金额等2.3、收费信息结构:收费时间、车牌号、应缴金额、实缴金额、优惠金额、收费员等2.4、维修信息结构:维修时间、车牌号、维修内容、维修费用、维修人等2.5、工作日志结构:日志类型、生成时间、触发时间、操作内容、操作人等三、系统模块设计通行证管理模块:能够管理停车场的客户信息,支持优惠折扣的设置,支持多种客户角色的分配及权限管理。

车辆管理模块:能够管理停车场的车辆信息,支持分配停车位、跟踪车辆停放时间以及出入位置,以实现计算停车费用。

收费管理模块:能够实现车辆停放费用的计费与收取,支持优惠计算功能,支持收费记录的查询与管理。

维修管理模块:能够管理停车场的车辆维修信息,能够针对每辆车的维修记录进行查询、录入和管理。

系统权限控制模块:支持可根据多种角色分配权限,以实现系统模块及功能的控制,保证信息安全性。

固定车位管理模块:能够支持固定车位信息的管理,可支持用户管理固定车位,以便系统自动识别用户并提供优惠处理。

四、系统实现方案4.1 前端 : 对停车场系统进行交互式操作,支持web,客户端,短信等界面,实现用户的操作及查询;前端应用可跨平台进行。

数据结构课程设计——停车场

数据结构课程设计——停车场

数据结构课程设计——停车场在当今社会,随着汽车数量的不断增加,停车场的管理变得日益重要。

一个高效、合理的停车场管理系统不仅能够提高停车场的使用效率,还能为车主提供更好的服务体验。

在本次数据结构课程设计中,我们将深入探讨如何设计一个实用的停车场管理系统。

一、需求分析首先,我们需要明确停车场管理系统的基本需求。

一般来说,它应该具备以下功能:1、车辆的入场登记,包括车辆的车牌号、入场时间等信息。

2、车辆的出场结算,根据停车时间计算停车费用。

3、实时显示停车场内的车位使用情况,以便车主了解是否有空闲车位。

4、能够支持不同类型的车辆,如小型车、中型车、大型车等,并根据车辆类型收取不同的费用。

二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和管理停车场的相关信息。

1、对于车辆信息的存储,我们可以使用链表。

链表的优点是插入和删除操作比较方便,可以快速地对车辆的入场和出场进行处理。

2、对于车位的管理,我们可以使用栈或者队列。

如果采用栈的方式,先进后出,适合模拟停车场的一端进出;如果采用队列的方式,先进先出,更符合一些实际场景中车辆按顺序入场和出场的情况。

3、为了快速查找车辆的信息,我们还可以使用哈希表,通过车牌号作为键,快速获取车辆的相关数据。

三、系统设计1、入场流程当车辆入场时,系统会获取车辆的车牌号、车型和入场时间等信息。

将这些信息存储到链表中,并在车位管理的数据结构(如栈或队列)中为车辆分配一个车位。

同时,更新停车场内的车位使用情况。

2、出场流程车辆出场时,根据车牌号在链表中查找车辆的入场时间等信息,计算停车时间和费用。

然后在车位管理的数据结构中释放车位,并更新车位使用情况。

3、车位显示实时统计车位管理数据结构中的空闲车位数量,并展示给车主,让他们能够提前了解停车场的空位情况。

4、费用计算根据车辆的车型和停车时间,按照预设的收费标准计算停车费用。

四、算法实现1、车辆入场算法```cvoid vehicleEntry(char plateNumber, int vehicleType) {Vehicle newVehicle =(Vehicle )malloc(sizeof(Vehicle));strcpy(newVehicle>plateNumber, plateNumber);newVehicle>vehicleType = vehicleType;newVehicle>entryTime = time(NULL);//将车辆信息插入链表insertVehicle(newVehicle);//为车辆分配车位allocateParkingSpace(newVehicle);updateParkingStatus();}```2、车辆出场算法void vehicleExit(char plateNumber) {Vehicle vehicle = searchVehicle(plateNumber);if (vehicle == NULL) {printf("未找到该车辆信息\n");return;}double parkingFee = calculateFee(vehicle);//释放车位releaseParkingSpace(vehicle);//从链表中删除车辆信息deleteVehicle(vehicle);updateParkingStatus();printf("车牌号:%s,停车费用:%2f 元\n", plateNumber, parkingFee);}```3、车位分配算法(以栈为例)void allocateParkingSpace(Vehicle vehicle) {if (top < MAX_PARKING_SPACES 1) {parkingSpaces++top = vehicle;vehicle>parkingSpaceNumber = top + 1;} else {printf("停车场已满\n");}}```4、车位释放算法```cvoid releaseParkingSpace(Vehicle vehicle) {if (top >= 0 && parkingSpacestop == vehicle) {parkingSpacestop = NULL;top;} else {printf("车位释放错误\n");}}```五、系统测试在完成系统的开发后,我们需要进行充分的测试以确保系统的稳定性和正确性。

停车场管理系统数据结构课程设计

停车场管理系统数据结构课程设计

停车场管理系统数据结构课程设计随着社会的发展和经济的快速增长,城市的交通压力越来越大,停车位的需求也越来越高。

而如何有效地管理停车场,提高停车位的利用率,成为了当今社会普遍关注的问题。

因此,本文将以停车场管理系统数据结构课程设计为主题,探讨停车场管理系统的数据结构设计。

一、需求分析停车场管理系统主要需要实现以下功能:1.车辆进入停车场时的记录;2.车辆离开停车场时的记录;3.计算停车费用;4.查询车辆信息;5.管理员管理停车场信息。

二、数据结构设计1.车辆信息结构体在车辆进入停车场时,需要记录车辆的信息,包括车牌号、车辆类型、进入时间等。

因此,我们可以定义一个车辆信息结构体,如下所示:struct CarInfo{string plateNumber; //车牌号string carType; //车辆类型string enterTime; //进入时间int parkingTime; //停车时间float parkingFee; //停车费用};2.停车场结构体停车场是一个重要的管理对象,需要记录停车场的信息,包括停车场容量、当前停车量、车位状态等。

因此,我们可以定义一个停车场结构体,如下所示:struct ParkingLot{int capacity; //停车场容量int currentCount; //当前停车量bool *parkingStatus; //车位状态CarInfo *parkingCar; //停车车辆信息};其中,parkingStatus数组表示每个车位的状态,true表示该车位已经被占用,false表示该车位空闲;parkingCar数组存储每个车位停放的车辆信息。

3.查询车辆信息结构体管理员需要查询车辆信息,因此我们可以定义一个查询车辆信息结构体,如下所示:struct QueryCarInfo{string plateNumber; //车牌号string enterTime; //进入时间string leaveTime; //离开时间float parkingFee; //停车费用};4.管理员结构体管理员需要管理停车场信息,包括设置停车场容量、添加车辆、删除车辆等。

数据结构停车场管理系统数据结构设计

数据结构停车场管理系统数据结构设计

数据结构停车场管理系统数据结构设计在智能化时代的今天,停车问题成为了城市管理的一大难题。

为了解决车辆日益增多的停车需求,设计一个高效的停车场管理系统显得尤为重要。

本文将围绕数据结构的设计来探讨停车场管理系统的实现。

一、需求分析停车场管理系统的主要功能是提供用户停车、缴费、查询等服务,同时需要为管理人员提供车辆调度、收费统计等功能。

为了实现这些功能,我们需要从需求角度对数据结构进行设计。

1. 用户管理停车场管理系统需要记录每个用户的停车信息,包括车辆信息、停车时间等。

为了高效查询用户信息,可以使用哈希表作为数据结构,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。

2. 车辆管理为了维护停车场内的车辆信息,我们可以使用链表作为数据结构来管理车辆。

每个节点可以保存一个车辆的信息,如车牌号、停车时间等,同时连接下一个车辆节点。

3. 车位管理停车场需要管理可用车位和已停车位。

为了高效分配车位,可以使用堆作为数据结构来存储可用车位信息。

堆可以根据剩余车位数量进行自动排序,当有车辆进入停车场时,从堆中取出最小的剩余车位。

4. 收费管理停车场管理系统需要计算用户停车时间并进行费用结算。

为了高效计算停车时间,可以使用栈作为数据结构来记录每个用户进入停车场的时间。

栈可以实现先进后出的特点,正好符合车辆停车的实际情况。

当用户离开停车场时,可以根据进入时间计算停车时间并进行费用结算。

5. 查询与统计为了用户能够方便地查询自己的停车信息,可以使用二叉查找树作为数据结构,将用户的车牌号作为键值进行存储。

二叉查找树可以在O(log n)的时间复杂度内完成查询操作。

另外,为了方便管理人员进行统计工作,可以使用散列表来存储车辆的停车信息,以便根据不同条件进行统计分析。

二、系统设计基于以上需求分析,我们可以得出停车场管理系统的数据结构设计如下:1. 用户管理使用哈希表来存储用户信息,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。

数据结构课程设计停车场管理系统

数据结构课程设计停车场管理系统

数据结构课程设计停车场管理系统
停车场管理系统是一种体现现代化管理的车库管理系统,它可以有效地控制车辆的入库、出库和停车费收取等。

停车场管理系统的设计原则是以业务实用性为基础,以车辆的安全和管理的效率为核心,以车主的方便为目标,以信息安全和财务支持为基础,以及以智慧停车场的发展为发展方向来设计。

停车场管理系统是一个基于互联网的系统,可以实现停车场的网络化管理,它可以实现停车场车辆的实时管理,可以实现停车场数据的实时上传和下载,可以实现停车场费用的实时收取,可以实现停车场财务的实时总结等功能,可以提高停车场的管理效率,提升停车场的运营水平。

总之,停车场管理系统是一个具有较强实用性的系统,它可以有效地控制车辆的入库、出库和停车费收取等,并可以实现停车场的网络化管理,提高停车场的管理效率,提升停车场的运营水平。

只要系统管理人员根据实际情况,灵活有效地调整系统的参数和指标,停车场管理系统将会发挥出最大的作用。

(完整word版)课程设计-停车场管理系统

(完整word版)课程设计-停车场管理系统

学号1011200142数据结构课程设计设计说明书停车场管理系统起止日期:年月至年月日学生姓名班级成绩指导教师(签字)年月日停车场管理系统一、引言 (3)二、系统总体设计 (3)1、设计思路 (3)2、系统总体框架图 (5)3、系统流程图 (5)三、详细设计 (7)1、车辆停车函数及流程图 (7)2、车辆离开函数及流程图 (8)3、列表显示车场信息函数及流程图 (9)4、列表显示便道信息 (10)5列表显示菜单函数及流程图 (11)四、总结 (12)参考文献 (12)五、附录 (13)一、引言随着现代化信息技术的发展,人民生活水平快速提高,汽车的数量也飞速增长,于此同时,停车问题越来越受人们的关注,为了使停车场有效管理,停车场管理的信息化成为必然。

我们可以利用所学的知识,编写一个停车场管理系统,以提高管理的效率,提升停车场的竞争力。

本次课程设计,我运用C语言编写停车场管理系统,主要实现汽车停车,离开,收费,停车信息查询,显示等功能,主要实现方式是用栈和队列.下面对栈和队列进行一下简单介绍.栈(stack)是一种仅允许在一端进行插入和删除运算的线性表。

栈中允许插入和删除的那一端,称为栈顶(top)。

栈顶的第一个元素称为栈顶元素。

栈中不可以插入和删除的那一端称为栈底.在一个栈中插入元素,即把新元素放到当前栈顶元素的上面,使其称为新的栈顶元素,即进栈(push)。

从一个栈中删除一个元素,即把栈顶元素删除掉,使其下面的元素成为新的栈顶元素,称为出栈(pop)。

栈遵循后进先出的原则,即后进栈的元素必先出栈.其中顺序栈是利用一组地址连续的存储单元依次存放从栈底到栈顶的元素。

在C 语言中,可以用一维数组描述顺序栈中数据元素的存储区域,并预设一个数组的最大空间。

栈底设置在0下标端,栈顶随着插入和删除元素而变化,可以用一个整形变量top来指示栈顶的位置.队列是一种限定在表的一端进行插人而另一端进行删除的线性表,与栈相反,队列遵循先进先出的原则.允许删除的一端,称为队头(front)。

课程设计停车场管理系统

课程设计停车场管理系统

课程设计停车场管理系统一、课程目标知识目标:1. 让学生理解停车场管理系统的基本原理和功能需求。

2. 使学生掌握利用所学编程语言设计简单的停车场管理系统。

3. 帮助学生了解数据库在停车场管理系统中的应用。

技能目标:1. 培养学生运用所学知识,如流程图绘制、代码编写和调试等,解决实际问题的能力。

2. 提高学生团队协作、沟通表达和项目管理的能力。

情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发他们探索新技术、新方法的热情。

2. 培养学生面对实际问题时,积极思考、勇于创新的态度。

3. 增强学生的环保意识,让他们认识到智能停车场系统对缓解交通压力、提高生活质量的重要性。

课程性质:本课程为信息技术学科,以项目式教学为主,结合教材内容,使学生能够将理论知识与实际应用相结合。

学生特点:考虑到学生所在年级,他们在前期课程中已掌握了基本的编程知识和数据库应用,具备一定的自学能力和团队协作精神。

教学要求:在教学过程中,教师应注重引导学生自主探究、动手实践,鼓励学生提出问题、解决问题。

同时,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得实质性的进步。

通过本课程的学习,使学生能够达到以上设定的课程目标,为后续相关课程打下坚实基础。

二、教学内容1. 教学大纲:a. 停车场管理系统概述:介绍停车场管理系统的基本概念、功能和应用场景。

b. 系统需求分析:讲解如何进行需求分析,明确系统所需实现的功能和性能要求。

c. 系统设计:包括数据库设计、界面设计和模块设计,阐述各部分的设计原则和实现方法。

d. 编程实现:利用所学编程语言(如Python、Java等),实现停车场管理系统的核心功能。

e. 系统测试与优化:教授测试方法,分析测试结果,提出优化策略。

2. 教学内容安排与进度:a. 概述(1课时):引导学生了解停车场管理系统的背景和意义。

b. 需求分析(2课时):指导学生进行实际需求分析,明确系统目标。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构设计:停车场管理姓名:韦邦权专业:2013级计算机科学与技术学号:13224624班级:13052316完成日期:2013.12.191 问题描述设停车场是一个可停放n辆汽车的狭长通道,且只有一个门可供出入。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆汽车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原顺序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

2 需求分析(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。

(2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。

实现停车场的调度功能。

(3)用顺序栈来表示停车场,链队表示停车场外的便道。

(4)显示停车场信息和便道信息。

(5)程序执行的命令为:○1车辆进入停车场○2车辆离开停车场○3显示停车场的信息。

3 概要设计3.1抽象数据类型定义(1)栈的抽象数据类型定义AST Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,...,n, n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}约定an端为栈顶,a1端为栈底。

基本操作:InitStack(&S)操作结果:构造一个空栈S。

DestroyStack(&S)初始条件:栈S已存在。

操作结果:栈S被销毁。

ClearStack(&S)初始条件:栈S已存在。

操作结果:将栈S清为空栈。

StackEmpty(S)初始条件:栈S已存在。

操作结果:若栈S为空栈,则返回TRUE,否则FALSE。

StackLength(s)初始条件:栈S已存在。

操作结果:返回S的元素个数,既栈的长度。

GetTop(S,&e)初始条件:栈S已存在且非空。

操作结果:用e返回S的栈顶元素。

Push(&S,e)初始条件:栈S已存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&S,&e)初始条件:栈S已存在且非空。

操作结果:删除S的栈顶元素,并用e返回其值。

StackTraverse(S,visit())初始条件:栈S已存在且非空。

操作结果:从栈底到栈顶依次对S的每个数据元素调用函数visit()。

一旦visit()失败,则操作失效。

}ADT Stack(2)队列的抽象数据类型定义ADT Queue{数据对象:D={ai|ai∈ElemSet,i=1,2,...,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}约定其中a1端为队列头,an为队列尾。

基本操作:InitQueue(&Q)操作结果:构造一个空队列Q。

DestroyQueue(&Q)初始条件:队列Q已存在。

操作结果:队列Q被销毁,不再存在。

ClearQueue(&Q)初始条件:队列Q已存在。

操作结果:将Q清为空队列。

QueueEmpty(Q)初始条件:队列Q已存在。

操作结果:若Q为空队列,则返回TRUE,否则FALSE。

QueueLength(Q)初始条件:队列Q已存在。

操作结果:返回Q的元素个数,即队列的长度。

GetHead(Q,&e)初始条件:Q为非空队列。

操作结果:用e返回的队头元素。

EnQueue(&Q,e)初始条件:队列Q已存在。

操作结果:插入元素e为Q的新的队尾元素。

DeQueue(&Q,&e)初始条件:Q为非空队列。

操作结果:删除Q的队头元素,并用e返回其值。

QueueTraverse(Q,visit())初始条件:Q已存在且非空。

操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit()。

一旦visit()失败,则操作失败。

}ADT Queue3.2模块划分本程序包括六个模块:(1)主程序模块void main(){初始化停车站;初始化让路的临时栈;初始化通道;输出主菜单:车辆到达、车辆离开与计费、查看停车场信息;}(2)入场模块int arrive(SqStack *In,LinkQueue *W){车辆进入停车场;计算停车费用}(3)出场模块void leave(SqStack *In,SqStack *Out,LinkQueue *W){车辆离开停车场;}(4)输出模块void info(SqStack S,LinkQueue W){输出停车场信息;}(5)栈模块——实现栈的抽象数据类型(6)队列模块——实现队列的抽象数据类型4 详细设计4.1数据类型的定义int MAX; /*定义一个全局变量用来存储车库最大容量*/float price;/*定义一个全局变量用来存储每车每小时的费用*/ typedef struct time{int hour;int min;}Time; /*时间结点*/typedef struct node{char num[10];Time reach;Time leave;}Car; /*车辆信息结点*/typedef struct NODE{Car *stack[100];int top;}SqStack; /*停车站*/typedef struct car{Car *data;struct car *next;}QNode;typedef struct Node{QNode *head;QNode *rear;}LinkQueue; /*通道*/4.2主要模块的算法描述本程序主要分为四部分:(1)主函数及程序框架、(2)车辆到达模块、(3)车辆离开模块、(4)显示车辆信息模块,(1)主函数void main(){SqStack In,Out; LinkQueue Wait;int ch;InitStack(&In); /*初始化停车站*/InitStack(&Out); /*初始化让路的临时栈*/InitQueue(&Wait); /*初始化通道*/while(1){printf("--------------------欢迎使用停车场管理系统--------------------\n");printf("\t本系统由5011工作室开发,作者:邓春国、段庆龙、梁伟明、丁磊。

\n\n");printf("请输入停车场的容量:");scanf("%d",&MAX);printf("请输入停车场的收费标准(元/小时):");scanf("%f",&price);printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。

\n",MAX,price);printf("\n(1)车辆到达\n(2)车辆离开\n(3)停车场信息\n(4)退出系统\n 请选择\n");while(1){ch=getch();switch(ch){case 49:arrive(&In,&Wait);break; /*车辆到达*/case 50:leave(&In,&Out,&Wait);break; /*车辆离开*/case 51:info(In,Wait);break; /*输出车站信息*/case 52:{printf("谢谢使用!");exit(0);} /*退出主程序*/default:printf("\n按键无效,请重新按键选择!");}/*49-52分别表示“1”-“4”这四个按键的键值*/system("CLS");printf("--------------------欢迎使用停车场管理系统--------------------\n");printf("\t本系统由CG工作室开发,作者:邓春国、段庆龙、梁伟明、丁磊。

\n\n\n");printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。

\n",MAX,price);printf("\n(1)车辆到达\n(2)车辆离开\n(3)停车场信息\n(4)退出系统\n请选择\n");}}}(2)车辆离开模块○1算法分析void leave(SqStack *In,SqStack *Out,LinkQueue *W) /*车辆离开*/{int room;Car *p,*t;QNode *q;/*开始定义一个整型变量room,用来记录要离开的车辆在停车场的位置,定义车辆结点指针p和t和队列结点指针q。

*/if(In->top>0) /*有车*/{while(1){printf("\n请输入车在停车场的位置(1-%d):",In->top);scanf("%d",&room);if(room>=1&&room<=In->top) break;}/*判断停车场内是否有车,如果有车,就输入要离开的车辆在停车场的位置,否则就提示停车场没车。

这里用了while循环语句,如果输入的车辆位置超出范围,就要重新输入。

*/while(In->top>room) /*车辆离开*/{Out->top++;Out->stack[Out->top]=In->stack[In->top];In->stack[In->top]=NULL;In->top--;}/*如果栈顶位置In->top大于要离开的车位置room(即要离开的车不在停车场的门口)的话,在要离开的车辆前面的车就要先离开,开到临时停车场,即临时栈中,因此Out所表示的临时栈的栈顶top加1,用来表示临时停车场增加1辆车;接着把该车的信息拷贝到栈Out中,然后删除栈In的栈顶(即这辆车开走)。

*/ p=In->stack[In->top];In->stack[In->top]=NULL;In->top--;while(Out->top>=1){In->top++;In->stack[In->top]=Out->stack[Out->top];Out->stack[Out->top]=NULL; Out->top--;}/*直到要离开的车辆前面的车都开到临时停车场之后,该车才离开,离开之后,该车的信息结点In->stack[In->top]置空,然后栈顶In->top减1。

相关文档
最新文档