课程设计2 栈和队列课程设计
一、
1、停车场管理
问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车要先退出,待它走后在依次进入。汽车离开时按停放时间收费。 基本功能要求:
(1) 建立三个数据结构分别是:停放、让路、等候。 (2) 输入数据模拟管理过程,数据(入或出,车号)。 停车场管理
#include #define Maxsize 10//停车场共停10辆车 #define maxsize 10//等待区共停10辆车 typedef int datatype; typedef struct ////////////用栈表示汽车停放和让路 { datatype data[Maxsize+1]; int top; }Seqstack; void Initstack(Seqstack *&s) { s=(Seqstack *)malloc(sizeof(Seqstack)); s->top=0; } int push(Seqstack *&s,datatype e) { if(s->top==Maxsize) return 0; s->top++; s->data[s->top]=e; return 1; } int pop(Seqstack *&s,datatype &e) { if(s->top==0) return 0; e=s->data[s->top]; s->top--; return e; } void Dispstack(Seqstack *s) { int i; cout<<\"车 号\"; for(i=s->top;i>0;i--) cout<cout<<\"停车时间\"; for(i=s->top;i>0;i--) cout< return(s->top); } ////////////////////////////////queue///////////////////////////////////// typedef struct ////////////////////用队列表示汽车等候 { datatype data[maxsize+1]; int front, rear; }sqqueue; void InitQueue(sqqueue *&q) { q=(sqqueue *)malloc(sizeof(sqqueue)); q->front=q->rear=0; } int enQueue(sqqueue *&q,datatype e) { if((q->rear+1)%maxsize==q->front) return 0; q->rear=(q->rear+1)%maxsize; q->data[q->rear]=e; return 1; } int deQueue(sqqueue *&q,datatype &e) { if(q->front==q->rear) return 0; q->front=(q->front+1)%maxsize; e=q->data[q->front]; return 1; } int lenqueue(sqqueue *&q) { return(q->rear-q->front); } void Disqqueue(sqqueue *q)//输出队列元素 { if(q->front==q->rear) cout<<\"No element!\"< {cout< cout<<\"------------Welcome to our Car Parking-----------------\"< cout<<\"* * * * * * * * 目前停车场状况* * * * * * * * *\"< cout<<\"收取车号为\"< Seqstack *s1,*s2; sqqueue *q; Initstack(s1); Initstack(s2); InitQueue(q); int a[8]={10,20,30,40,50,60,70,80}; for(int i=0;i<8;i++) push(s1,a[i]); int In; datatype x,e; current(s1,q); do { menu(); cin>>In; switch(In) { case 1: int time; cout<<\"请输入停放时间(/小时,每小时2元):\"< if(push(s1,time)!=0) cout<<\"您的车号是:\"< cout<<\"停车场已满,请稍等...\"< cout<<\"请输入车号:\"< for( i=Stacklength(s1);i>num;i--) { pop(s1,x); push(s2,x); } chargemoney(s1); pop(s1,x); for(i=Maxsize;i>num;i--) { pop(s2,x); push(s1,x); } if(q->front!=q->rear) { deQueue(q,e); push(s1,e); cout<<\"等待车号为\"< \"< Dispstack(s1); break; case 4: break; default: cout<<\"error input!\"< 实验结果截图: 因篇幅问题不能全部显示,请点此查看更多更全内容