2022年C++数据结构大作业课程设计 .pdf
C+/数据结构大作业 / 课程设计【校园导游咨询】【停车场管理】娃娃们可以收着以后用绝对纯手工打造内含类模块 / 一维指针数组(谨以此程序供大家参考。运行结果后面有贴图)目录【1】校园导游咨询程序设计源代码及 截图【2】停车场管理方案一程序设计源代码及 截图【3】停车场管理方案二程序设计源代码及 截图#【1】【校园导游咨询】#(ps: 该校园导游咨询系统没有输入值,所有信息是都在class MGraph的构造函数中传输的,且校园景点信息皆为【上海电力学院】景点信息。请大家注意,直接从文章copy到 visual stutio中会出现中文字符,注意删除,推荐大家在一行语句的分号后面,点出光标,按一下delete键,然后按一下enter键,完成visual stutio的自动对齐,这样程序看起来一目了然,更易于操作和更改)【问题描述】设计一个校园导游程序,为来访的客人提供各种信息查询服务。【基本要求】(1) 设计你所在学校的校园平面图,所含景点不少于10 个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2) 为来访客人提供图中任意景点相关信息的查询。(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。【选作内容】(6) 扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。*【以下为类的定义】* #include #include using namespace std; const int MaxSize=18; const int INFINITY=65535;/最大值无穷class direction; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - - - - - template class MGraph; template class VertexNode/定义头结点 friend class MGraph; public: int vex;/顶点名称T vexname;/顶点名称T vexinf;/顶点信息direction dir;/存放顶点方位信息的direction类的 dir。; class direction public: int ln;/ 存放在方向图中的横坐标,表示东西int col;/存放在方向图中的纵坐标,表示南北; template class MGraph/ 定义无向图的邻接矩阵 public: MGraph(); / 构造函数,初始化具有n 个顶点的图void printvexname();/显示所有景点及景点代号void printvexinf(int i);/显示代号为i 景点的名称及信息void printroad(int i,int j);/显示景点ij 的最短路径方案信息void printdir(int i,int j);/显示景点i 到 j 的方向信息,如“ 向东 100m ,向南 200m”VertexNode adjlistMaxSize; /存放景点全部信息的景点类数组int vertexNum,arcNum; /图的顶点数和边数void Root(int p,int q);/递归寻找pq 间的最短路径int PathMaxSizeMaxSize,DistMaxSizeMaxSize;/创建 Path 和 Dist 分别存放两点间最短路径的前驱节点,两点间最短路径长度int LineMaxSize;/Line存放路径int kkk;/Line数组的标记private: T vertexMaxSize; /存放图中顶点的数组int arcMaxSizeMaxSize;/存放图中边的数组; *【以下为类的实现即类函数的定义】* template MGraph:MGraph()/a为景点代号, b 为景点名称, c 为景点信息, d 为景点方位信息的横坐标,e 为景点方位信息的纵坐标/s 为存放景点邻接矩阵信息的一维数组,根据其对称性可以用公式赋值给二维数组arc int s=0, 1,0, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - - - - 0,2,0, 0,0,2,0, 0,0,2,3,0, 0,0,0,4,2,0, 0,0,0,0,2,3,0, 0,0,0,0,2,3,1,0, 0,0,2,0,2,0,0,2,0, 4,0,2,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,0,2,0, 1,0,0,0,0,0,0,0,0,0,2,0, 0,0,0,0,0,0,0,0,0,3,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0, 0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,2,0; int a=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17; char* b=南门 , 实验楼 , 南图 , 大活 , 睿思楼 , 大礼堂 , 南 4 教 , 知行楼 , 国交楼 , 南 3 教, 南 2 教, 南 1 教, 北图 , 北 3 教, 北 4 教, 北 2 教 , 北 1 教, 北门 ; char* c=南校区正门 , 物理实验楼 , 南校区图书馆 , 大学生活动中心, 教师办公楼、医务室及留学生公寓, 大礼堂,用于举办各种文艺演出, 南校区第4 教学楼 , 实习基地,计算机房等, 国际交流中心,教职工餐厅, 南校区第3 教学楼 , 南校区第 2 教学楼 , 南校区第1 教学楼 , 北校区图书馆, 北校区第3 教学楼 , 北校区第4 教学楼 , 北校区第2 教学楼 , 北校区第1 教学楼 , 北校区正门 ; int d=8,6,4,4,1,0,0,1,3,4,6,8,4,3,2,3,5,8; int e=8,8,8,10,8,10,7,6,6,6,6,6,3,1,0,0,0,2; int i,j; vertexNum=18; arcNum=30; for(i=0;ivertexNum;i+) adjlisti.vex=ai; adjlisti.vexname=bi; adjlisti.vexinf=ci; adjlisti.dir.ln=di; adjlisti.dir.col=ei; for (i=0; ivertexNum; i+)/初始化邻接矩阵for (j=0; jvertexNum; j+) arcij=arcji=s(i*(i+1)/2+j; /根据 s 的对称性,将一维数组中的数据赋给二维数组arc template void MGraph:printvexname() int i; for(i=0;ivertexNum;i+) coutadjlisti.vex adjlisti.vexnameendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 24 页 - - - - - - - - - template void MGraph:printvexinf(int i) couti adjlisti.vexname:adjlisti.vexinfendl; template void MGraph:printdir(int i,int j) int dx,nb;/临时存放i 与 j 之间的南北东西关系j 在 i 的哪边?dx=adjlistj.dir.col-adjlisti.dir.col; nb=adjlistj.dir.ln-adjlisti.dir.ln; if(dx0)/即 j 在 i 的东边cout 向东 dx*100m,; else cout 向西 dx*(0-100)0)/即 j 在 i 的南边cout 向南 nb*100m; else cout 向北 nb*(0-100)m; template void MGraph:Root(int p,int q) if (Pathpq0) Root(p,Pathpq); Root(Pathpq,q); else Linekkk=q; kkk+; template void MGraph:printroad(int i,int j) int p,q,m,k,item1,item2; for(p=0;pvertexNum;p+) for(q=0;qvertexNum;q+) Distpq=arcpq;/邻接矩阵赋值for(k=0;kvertexNum;k+) for(p=0;p0) for(q=0;q0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - if (DistpqDistpk+Distkq)|(Distpq=0)&(p!=q) Distpq=Distpk+Distkq; Pathpq=k; coutn=n; cout 从adjlisti.vexname到adjlistj.vexname的最短路径为:endl; coutadjlisti.vexname; kkk=2; Root(i,j); item2=Line2; cout; printdir(i,item2); coutadjlistitem2.vexname; for(m=3;m=kkk-1;m+) item1=Linem; cout; printdir(item1-1,item1); coutadjlistitem1.vexname; coutendl; coutn=n; *【以下为主函数】* int funcchoice()/系统功能选择页面 int choice; cout=endl; cout 欢迎进入校园导游咨询平台endl; cout 1-显示校园所有景点信息endl; cout 2-查询校园景点信息endl; cout 3-问路查询系统endl; cout 4-退出导游资讯平台endl; cout=endl; coutchoice; return choice; void main() MGraph mg; int funcchoice(); int fc; while(1) fc=funcchoice(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - if(fc=1) int i; for(i=0;img.vertexNum;i+) mg.printvexinf(i); else if(fc=2) int i; mg.printvexname(); coutendli; mg.printvexinf(i); else if(fc=3) int i,j; mg.printvexname(); coutij; mg.printroad(i,j); else if(fc=4) break; else cout 输入有误,请重新输入!endl; 运行测试图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 24 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 24 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 24 页 - - - - - - - - - #【2】【停车场管理系统【方案一程序】 #(ps :该程序有漏洞,若将要离开的车辆是停于便道上的,则对该车进行驶离操作时程序内部有错误数据,虽然做了函数完成这一功能,但因时间有限,没能及时查找更正,现在懒得改了。大家将就看吧。不过运行是可以的)【问题描述】设停车场是一个可停放n 辆汽车的长通道, 且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 24 页 - - - - - - - - - 时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。【基本要求】以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车 “ 到达 ” 或“ 离去 ” 信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。【测试数据】设 n=2 ,输入数据为:(A,1,5),( A,2,15),( A,3,20),( A,4,25),( A,5,30),( D, 2,35 ),(D, 4,40),( E,0, 0)。其中: A 表示到达( Arrival ); D 表示离去( Departure ); E 表示输入结束(End)。*【以下为类的定义】* #include using namespace std; const int Max=2;/车库最大容量const double price=30;/每小时的费用/ 思想:(报告第四页)/ 我的系统界面,输入信息为:(到达/离开 /退出);车牌号;时刻/ 因此,我的停车场类分成车辆到达和车辆离开两个主要的函数实现。/ 车辆到达,有入栈和入队。车辆离开有出栈,出队和入栈操作。/ 因此我又编写入栈的类,队的类。与parkingmanagement进行友元。/*类定义 * class car/ 车的信息类 public: double time;/计费时间int number;/车牌号car *next;/存放 car 类型元素的数组初始地址; class carstack/ 栈(停车场)的类 friend class parkingmanagement;/parkingmanagement能访问 carstack 类中所有成员public: carstack();/构造函数,栈的初始化int empty();/判断栈是否为空int full();/判断栈是否为满car *s;/存放 car 类型栈元素的数组初始地址int top;/栈顶指针; class carqueue/队列(便道)的类 friend class parkingmanagement;/parkingmanagement能访问 carstack 类中所有成员public: carqueue();/构造函数,队列的初始化int full();/判断队列是否为满名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页 - - - - - - - - - car *front,*rear;/存放 car 类型队列元素的数组初始地址; class parkingmanagement public: int pushstack(carstack &cs,int cnum,double ctime);/入栈 ,cs 栈内进行调整,返回栈内位置void popstack(carstack &cs,int cnum);/出栈, cs 栈内进行调整,/ 根据车牌号把车弹出栈,将出栈 car 的 number 赋值给 int popstacknumber() / 将出栈 car 的 time 赋值给 double popstacktime(),无返回值!int pushqueue(carqueue &cq,int cnum,double ctime);/入队 ,队内进行调整,返回队内位置int popqueue(carqueue &cq);/出队 ,队内进行调整,返回汽车车牌号void arrival(carstack &cs,carqueue &cq,int cnum,double ctime);/车辆到达,/ 根据输入的车牌号、到达时间,变更函数参数;并cout 车位信息void leave(carstack &cs,carqueue &cq,int cnum,double ctime);/车辆离开,/ 根据输入的车牌号找到汽车,并进行出栈操作、出队操作和入栈操作;/ 并 cout 停留时间和收费情况void deletequeue(carqueue &cq,int i);/删除 cq 过道中第i 辆车int popstacknumber;/专门存放出栈的时候返回的车牌号double popstacktime;/专门存放出栈的时候返回的时刻; *【以下为类的实现】* carstack:carstack()/构造函数,栈的初始化 top=-1; s=new carMax;/创建 car 类型栈元素的数组if(s=NULL) cout 栈空间分配不成功!endl; exit(1); int carstack:full()/判断栈是否为满 return top=Max-1; carqueue:carqueue()/构造函数,队列的初始化 rear=front=NULL; int parkingmanagement:pushstack(carstack &cs,int cnum,double ctime)/入栈 ,cs 栈内进行调整,返回栈内位置 if(cs.top=Max-1)/Max从 1 开始, top 从 0 开始 cout 停车场已满!endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 24 页 - - - - - - - - - return Max; else cs.top+; (cs.scs.top).number=cnum;/将 cnum 赋给栈顶位置的车的车牌号,s 是 car 类型栈元素的数组(cs.scs.top).time=ctime;/将 ctime 赋给栈顶位置的车的入栈时间,s 是 car 类型栈元素的数组return (cs.top+1);/返回栈内位置加1,即停车场内车位从1 号开始 void parkingmanagement:popstack(carstack &cs,int cnum)/出栈, cs 栈内进行调整,/ 根据车牌号把车弹出栈,将出栈 car 的 number 赋值给 int popstacknumber / 将出栈 car 的 time 赋值给 double popstacktime,无返回值! int i; car p; carstack stemp;/定义一个carstack 类型的临时存放出栈元素的栈for(i=0; ii) stemp.s+(stemp.top)=cs.s(cs.top)-;/出栈的元素数组逐个赋给临时栈popstacknumber=p.number;/将这个车牌号信息传给int popstacknumber() popstacktime=p.time;/将该车的时间信息传给double popstacktime() cs.top-;/栈顶指针回到原来位置while(stemp.top=0) cs.s+(cs.top)=stemp.s(stemp.top)-;/临时栈出栈的元素逐个赋给原栈,完成先退再进的工作 int parkingmanagement:pushqueue(carqueue &cq,int cnum,double ctime)/入队 ,队内进行调整,返回队内位置 car *p,*countp; int count(1);/count用于记录车在过道上的位置信息,因队列为链式的,所以进行循环累加p=new car;/创建一个car 类型的指针p-number=cnum; p-time=ctime; p-next=NULL;/首先将指向存放car 类型元素的数组初始地址置空if (cq.front=NULL)/第一次入队要判断头结点是否为空 cq.front=cq.rear=p; else / 尾插法插入元素p-next=(cq.rear)-next; (cq.rear)-next=p; cq.rear=(cq.rear)-next; countp=(cq.front)-next; while(countp!=NULL) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - - - - - - - - count+; countp=countp-next; /count即车在过道上的位置,【从1 开始计!】return count; int parkingmanagement:popqueue(carqueue &cq)/出队 ,队内进行调整,返回汽车车牌号 car p; p.number=(cq.front)-next)-number;/cq队里,从cq.front 开始指向下一个元素的车牌号赋给car 类型的车信息p.time=(cq.front)-next)-time;/cq队里,从cq.front 开始指向下一个元素的时刻/ 赋给 car 类型的车信息p.next=(cq.front)-next)-next;/cq队里,从cq.front 开始指向下一个元素的指针/ 赋给 car 类型的车信息的下一个元素的指针return p.number; cq.front=(cq.front)-next; void parkingmanagement:arrival(carstack &cs,carqueue &cq,int cnum,double ctime) / 车辆到达,根据输入的车牌号、到达时间,变更函数参数;并cout 车位信息 int pos; if(!(cs.full()/如果栈未满,车辆停入停车场 int fl(0),i;/定义一个从0 开始的标记fl for(i=0;i=cs.top;i+) if(cs.si.number=cnum)/如果到达的车的车牌号= 栈内已有车辆的车牌号 fl=1;/fl记 1 break; if(fl=1)/如果到达的车的车牌号!= 栈内已有车辆的车牌号cout 输入错误!请重新输入!endl; else pos=pushstack(cs,cnum,ctime);/入栈,返回车位信息cout 该停车场还有空位,请到pos号车位进行泊车endl; coutendl; else/ 如果栈满,车辆暂停便道 pos=pushqueue(cq,cnum,ctime);/入队,返回车位信息cout 该停车场已满,请将车停到便道pos号车位上 endl; coutendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 24 页 - - - - - - - - - void parkingmanagement:leave(carstack &cs,carqueue &cq,int cnum,double ctime) / 车辆离开,根据输入的车牌号找到汽车,并进行出栈操作、出队操作和入栈操作;并cout 停留时间和收费情况int i,flag(0),pstack,count(1),outcarnum; double hour; car *p; for(i=0;i=cs.top;i+) if(cs.si).number=cnum) flag=1; break; if(flag)/ 如果输入的车牌号与栈内已有车辆的车牌号一致 popstack(cs,cnum);/出栈操作hour=ctime-popstacktime;/时间计算outcarnum=popqueue(cq);/将便道上的第一辆车出队,入栈。并将其车牌号赋给outcarnum pstack=pushstack(cs,outcarnum,ctime);/将便道上的第一辆车,入栈cout 该车在本停车场内停留时间为hour分钟,应付金额hour*(price/60)元! next; if(p-number=cnum)/在过道中找到要出去的车,则在队列中删除该car。/ 后面的车辆依然顺序排列,补足空位 deletequeue(cq,count); if(countMax) cout 您的车在便道上的位置为count号车位,请自行驶离,无需付费!endl; break; if(p=NULL) cout 您的车不在本停车场内,或输入有误,请重新输入!endl; void parkingmanagement:deletequeue(carqueue &cq,int i) car *p,*q; int j(0); p=cq.front; while(p & jnext; j+; / 找到第 i 个节点 (i 从 1 开始 ) if(!p | !p-next) coutnext; p-next=q-next; delete q; *【以下是主程序】* void print() cout= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =endl; cout= 欢迎光临!=endl; cout= =endl; cout= 本停车场收费标准为:30 元/小时;车库容量为:2 =endl; cout= =endl; cout= 请输入您的泊车信息:格式为:(到达/离去 /退出);车牌号;现在时刻=endl; cout= 其中, A:到达; D:离去; E:退出系统=endl; cout= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =acccarnumcartime; if(acc=A) park.arrival(cars,carq,carnum,cartime); else if(acc=D) park.leave(cars,carq,carnum,cartime); else if(acc=E) break; else cout 您的输入有误,请重新输入!endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 24 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 24 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 24 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 24 页 - - - - - - - - - #【3 】【停车场管理系统【方案二程序】 #(ps :本方案与方案一有同样的问题,就是在对便道上的车进行驶离操作时,数据错误,同样的理由,没有改正。如果有细心娃娃帮忙指点改正,在此感激啦 )*【以下为类定义】*#include using namespace std; const int MaxSize=2;/停车场内最多能停2 辆车template class carStack;/ template /定义模板类struct Node/过道停车的队列所需链式结点 T carnum;/定义车牌号类型Node *next; /此处 也可以省略; template class carinfo friend class carStack; public: T carnum; /车号int cartime;/停车时间; template class carQueue 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 24 页 - - - - - - - - - friend class carStack; public: carQueue(); /构造函数,初始化一个空的链队列int EnQueue(T cnum); /将元素 x 入队 ,并返回其在队内的位置(从1 开始)T DeQueue(); /将队头链式结点出队,并返回汽车车牌号void deletequeue(int i);/将队内低i 个元素删除,即便道上i 位置的汽车驶离bool Empty(); /判断链队列是否为空Node *front, *rear; ; template class carStack friend class carinfo; public: carStack() ; /构造函数,栈的初始化,停车场容量为【size】void Pushcar(T cnum,int ctime); /有车停入停车场int Popcar(T outcnum,int outctime); /将第 cnum 辆车出栈,并返回其停车时间(hour )bool full();/判断栈是否为满?满则返回1 carinfo *S;/? int top; ; *【以下为类的实现】* template /初始化队列carQueue:carQueue() front=rear=NULL; template int carQueue:EnQueue(T cnum)/车子进入便道 int i(0); Node *s,*p;/?s=new Node; s-carnum=cnum; s-next=NULL; if(front=NULL)/空队列,【新结点既是队头,又是队尾】关键是!front 指向第一个结点 front=rear=s; else rear-next=s;/将结点 s 插入到队尾rear=s; p=front; while(p!=NULL) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 24 页 - - - - - - - - - i+; p=p-next; /i即车在过道上的位置,【从1 开始计!】return i; template T carQueue:DeQueue() Node *p; if (front=NULL) coutnext;/将队头元素所在结点摘链 return p-carnum; delete p;/将出队进栈的车从队列里删除 template bool carQueue:Empty()/判断是否为空,为空则返回1,不为空则返回0 return front=NULL; template carStack:carStack()/构造栈算法:top(-1) / 建立一个最大尺寸为size 的空栈S=new carinfoMaxSize;/创建存储栈的数组if(S=NULL) /分配不成功 cerr动态存储失败!endl; exit(1); /stdlib.h template void carStack:Pushcar(T cnum,int ctime) if (top=MaxSize-1) cout 车场内已停满汽车; else S+top.carnum=cnum; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 24 页 - - - - - - - - - Stop.cartime=ctime; template int carStack:Popcar(T outcnum,int outctime) int i,hour; carStack Stemp;/建一个临时模拟停车场int Stop=-1; for(i=0;ii) Stemp.S+Stop=Stop-; hour=outctime-Stop.cartime; return hour; top-; while(Stop=0) S+top=Stemp.SStop-; template bool carStack:full() return top=MaxSize-1; template void carQueue:deletequeue(int i) Node *p,*q; int j(1); p=front; while(p & jnext; j+; / 找到第 i-1 个结点 (结点位置从1 开始 ) if(!p|!p-next) couti不合法! next; p-next=q-next; delete q; *【以下为主函数】* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 24 页 - - - - - - - - - void outputpark()/系统功能选择页面,输入泊车信息 cout=endl; cout 欢迎来到秦小宝停车场!endl; cout (本停车场收费标准为5 元/小时, 60 分钟以内记为1 小时) endl; cout=endl; cout 请输入您的车辆信息:endl; cout (泊车输入A/驶离输入D/ 退出系统输入E;请输入您的车牌号;请输入现在时刻)endl; void m