C語言課程設計之停車場管理問題_第1頁
C語言課程設計之停車場管理問題_第2頁
C語言課程設計之停車場管理問題_第3頁
C語言課程設計之停車場管理問題_第4頁
C語言課程設計之停車場管理問題_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第C語言課程設計之停車場管理問題1.問題描述

停車場內(nèi)只有一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內(nèi)按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在停車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內(nèi)某輛車要離開時,在它之后開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程序。

2.基本要求

(1)以棧模擬停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進行模擬管理。

(2)每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車到達或離去信息、汽車牌照號碼及到達或離去的時刻,對每一組輸入數(shù)據(jù)進行操作后的輸出數(shù)據(jù)為:若是車輛到達,則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車離去;則輸出汽車在停車場內(nèi)停留的時間和應交納的費用(在便道上停留的時間不收費)。

(3)棧以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表結(jié)構(gòu)實現(xiàn)。

(4)按照題意要求獨立進行設計,設計結(jié)束后按要求寫出設計報告。

一、代碼塊

#includestdio.h

#includemalloc.h

#includestdlib.h

typedefintElemType;

#defineMaxSize100

#defineQNODEstructQNode

typedefstructNode

//車輛信息

charAL;

intNO;

inttime;

}Node;

typedefstructStack

//棧定義

structNode

data[MaxSize];

inttop;

intnum;

}SqStack;

QNODE

//隊列節(jié)點

structNodedata;

QNODE*next;

typedefstructlinkqueue

//隊列結(jié)構(gòu)體定義

QNODE*front,*rear;

intnum;

}LinkQueue;

SqStack*Init_SeqStack()

//置空棧

SqStack*s;

s=(SqStack*)malloc(sizeof(SqStack));

s-top=-1;

s-num=0;

returns;

LinkQueue*Init_LQueue()

//創(chuàng)建空隊列

LinkQueue*q;

QNODE*p;

q=(LinkQueue*)malloc(sizeof(LinkQueue));

p=(QNODE*)malloc(sizeof(QNODE));

p-next=NULL;

q-front=q-rear=p;

q-num=0;

returnq;

intISEmpty_SeqStack(SqStack*s)

//判斷棧是否為空,棧為空返回1

if(s-top==-1)

return1;

else

return0;

int

ISFULL_SeqStack(SqStack*s,intn)

//判斷棧是否已滿,若棧滿返回1

if(s-top==n-1)

return1;

else

return0;

intISEmpty_LQueue(LinkQueue*q)

//判斷隊列是否為空,隊列為空返回1

if(q-front==q-rear)

return1;

else

return0;

voidIN_Lqueue(

LinkQueue*q,structNodes)

//入隊

QNODE*p;

p=(QNODE*)malloc(sizeof(QNODE));

p-data=s;

q-num++;

p-next=NULL;

q-rear-next=p;

q-rear=p;

voidPush_SeqStack(SqStack*p,structNodes)

//入棧

p-top++;

p-data[p-top]=s;

p-num++;

intPOP_SeqStack(SqStack*s,structNodecar)//出棧

SqStack*p;

intt;

p=Init_SeqStack();

while(s-data[s-top].NO!=car.NO)//找到車牌號為P.NO的車,

{

Push_SeqStack(p,s-data[s-top]);

s-top--;

s-num--;

}

t=car.time-s-data[s-top].time;

s-top--;

s-num--;

while(ISEmpty_SeqStack(p)==0)

{

Push_SeqStack(s,p-data[p-top]);

p-top--;

p-num--;

}

returnt;

structNodeOut_LQueue(LinkQueue*q)

//出隊

QNODE*p;

p=q-front-next;

q-front-next=p-next;

q-num--;

if(

q-front-next==NULL)

q-rear=q-front;

returnp-data;

free(p);

intmain()

SqStack*parkstack;

//parkstack為表示停車場的棧

LinkQueue*parkqueue;

//parkqueue為表示便道的隊列

structNodecar;

intn,a=0,t;

//n為停車場棧的最大容量

floatf;

//f為每小時收費

parkstack=Init_SeqStack();

parkqueue=Init_LQueue();//初始界面

printf("***************停車場信息查詢***************\n");

printf("請輸入停車場最大容量n=");

scanf("%d",

printf("\n請輸入每分鐘收取費用f=");

scanf("%f",

printf("\n請輸入車輛信息\n");

scanf("%c,%d,%d",car.AL,car.NO,car.time);

while(car.AL!='Q')

{

if(car.AL=='A')

{

//

汽車到達的情況

if(ISFULL_SeqStack(parkstack,n)==1)

//棧滿的情況

{

IN_Lqueue(parkqueue,car);

//進入隊列等待

printf("這輛車在門外便道上第%d個位置\n",parkqueue-num);

printf("\n");

printf("請輸入車輛信息\n");

}

else

{

Push_SeqStack(parkstack,car);

//入棧

printf("這輛車在停車場內(nèi)第%d個位置\n",parkstack-num);

printf("\n");

printf("請輸入車輛信息\n");

}

}

if(car.AL=='L')

//汽車離開的情況

{

t=POP_SeqStack(parkstack,car);//出棧

printf("這輛車停留時間為%d,收費為%f。\n",t,f*t);

printf("\n");

printf("請輸入車輛信息\n");

if(ISEmpty_LQueue(parkqueue)==0)

//隊列不為空需要進棧

Push_SeqStack(parkstack,Out_LQueue(parkqueue));

}

if(car.AL=='P'car.NO==0car.time==0)//顯示停車場的車數(shù)

{

printf("停車場的車數(shù)為%d\n",parkstack-num);

printf("\n");

printf("請輸入車輛信息\n");

}

if(car.AL=='W'car.NO==0car.time==0)//顯示候車場的車數(shù)

{

printf("候車場的車數(shù)為%d\n",parkqueue-num);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論