您的当前位置:首页正文

栈和队列课程设计停车场管理

2020-05-14 来源:步旅网


课程设计2 栈和队列课程设计

一、

1、停车场管理

问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车要先退出,待它走后在依次进入。汽车离开时按停放时间收费。 基本功能要求:

(1) 建立三个数据结构分别是:停放、让路、等候。 (2) 输入数据模拟管理过程,数据(入或出,车号)。 停车场管理

#include using namespace std;

#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<data[i]<<\" \"; cout<int Stacklength(Seqstack *s) {

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<<\"The elemnt in this Sqqueue is:\"<front!=q->rear)

{cout<data[q->front+1]<<\" \"; q->front++;} q->front=0; cout<void menu() {

cout<<\"------------Welcome to our Car Parking-----------------\"<cout<<\"3-----------查看停车场停车情况\"<void current(Seqstack *&s1,sqqueue *&q) {

cout<<\"* * * * * * * * 目前停车场状况* * * * * * * * *\"<cout<<\"停车场共\"<top<<\"辆车.\"; cout<<\"等待区共有\"<cout<<\"* * * * * * * * * * * * * * * * * * * * * * * \"<void chargemoney(Seqstack *s)//收费系统,按每小时2元钱 {

cout<<\"收取车号为\"<top<<\"的车,停车费\"<<(s->data[s->top])*2<<\"元.\"<int main() {

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元):\"<>time;

if(push(s1,time)!=0)

cout<<\"您的车号是:\"<top<{enQueue(q,time);

cout<<\"停车场已满,请稍等...\"<rear<current(s1,q); break; case 2:

cout<<\"请输入车号:\"<>num;

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<<\"等待车号为\"<front<<\"的车,进入停车场,停车车号为

\"<top<} current(s1,q); break; case 3:

Dispstack(s1); break; case 4: break; default:

cout<<\"error input!\"<while(In!=4); return 0; }

实验结果截图:

因篇幅问题不能全部显示,请点此查看更多更全内容