2023年停車場實驗報告_第1頁
2023年停車場實驗報告_第2頁
2023年停車場實驗報告_第3頁
2023年停車場實驗報告_第4頁
2023年停車場實驗報告_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

UniversityofInternationalBusinessandEconomics

《算法與數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計

題目:停車場的收費管理系統(tǒng)

組長:張賽

成員:王佳琪,袁潔瑩,張瑜

完畢日期:2023年12月25日

一、設(shè)計目的與內(nèi)容

1.問題描述

任務(wù):停車場可以同時停放M輛車,停車場的入口和出口可分別有N輛車排隊。停車每小時

收費5元,天天不超過50元,停車不滿半小時不收費,超過半小時按一小時收費。

功能規(guī)定:完畢停車場進(jìn)出車的收費管理以及查詢每輛車的停車記錄(按照車牌號查詢):停

車場目前的狀況(滿或空的車位數(shù))。

規(guī)定:輸入數(shù)據(jù)形式和范圍:車牌號、停車開始時間

輸出形式:有中文提醒,停車的時間長短、離開停車場的時間、費用

界面規(guī)定:有合理的提醒。

存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能規(guī)定自己設(shè)計,但是規(guī)定停車記錄要存儲在數(shù)據(jù)文獻(xiàn)中。

測試數(shù)據(jù):規(guī)定使用1、所有合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測試,

以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請在上交的資料中寫明;

2.基本規(guī)定

(1)停車場管理重要實現(xiàn)以下幾個功能:

①、停車場車位的劃分。

②、車輛進(jìn)出管理及收費功能。

③、停車場車輛信息查詢功能。

④、退出系統(tǒng)。

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

理。

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

3.目的:

程序所能達(dá)成的功能:

程序重要服務(wù)于停車場使用者和停車場管理者。

對于使用停車場的停車者,在其等待期間,系統(tǒng)為使用者提供查詢,修改,刪除車輛信息的操

作。當(dāng)使用者想要離開停車場,停車場自動計算出停車費用,并自動讓正在等待的使用者有

序進(jìn)入停車位。

而管理者可以通過本系統(tǒng)查詢過場,在場,等待的車輛信息,也可以記錄24小時內(nèi)的停車收

入。

停車場的管理系統(tǒng)運用棧和隊列的這些特點來實現(xiàn)模擬停車場和便道。

二、算法的基本思想

1.數(shù)據(jù)結(jié)構(gòu)定義

(1)隊列數(shù)據(jù)類型定義:

ADTQueue{

數(shù)據(jù)對象:D={ai|aiGE1emSet,i=l,2,....,n,n20}

數(shù)據(jù)關(guān)系:R1={|ai-1,aieD,i-2...,n)

基本操作:

InitQueue(&Q)

操作結(jié)果:構(gòu)造一個空隊列Q。

DestroyQueue(&Q)

初始條件:隊列Q已存在。

操作結(jié)果:隊列Q被銷毀,不再存在。

CiearQueue(&Q)

初始條件:隊列Q已存在。

操作結(jié)果:將Q清為空隊列。

QueueEmpty(&Q)

初始條件:隊列Q已存在。

操作結(jié)果:若Q為空隊列,則返回TRUE,否則返回FALSEO

QueueLength(Q)

初始條件:隊列Q己存在。

操作結(jié)果:返回Q的元素個數(shù),即隊列的長度。

GetHead(Q,&e)

初始條件:Q為非空隊列。

操作結(jié)果:用e返回Q的隊頭元素。

EnQueue(&Q,e)

初始條件:隊列Q已存在。

操作結(jié)果:插入元素e為Q的新的隊尾元素。

DeQueue(&Q,&e)

初始條件:Q為非空隊列。

操作結(jié)果:刪除Q的隊頭元素,并用e返回其值。

QueueTraverse(Q,visit())

初始條件:Q已存在且非空。

操作結(jié)果:從隊頭到隊尾,依次對Q的每個數(shù)據(jù)元素調(diào)用函數(shù)visit()?一旦visit。

失敗,則操作失敗。

}ADTQueue

(2)棧數(shù)據(jù)類型定義

ADTstack{

數(shù)據(jù)對象:D={ai|aiGcharset,i=l,2,....,n,n20}

數(shù)據(jù)關(guān)系:R1={IaiT,aieD,i=2...,n}

基本操作:

initstack(&S,n)

操作結(jié)果:構(gòu)造一個空棧S,該??纱娣舗個元素。

push(&S,e)

初始條件:棧S已存在。

操作結(jié)果:在棧S的棧頂插入新的棧頂元素e。

pop(&S,&e)

初始條件:棧S已存在。

操作結(jié)果:刪除S的棧頂元素,并以e返回其值。

DestroyStack(&S)

初始條件:棧S已存在。

操作結(jié)果:銷毀棧S。

C1earStack(&S)

初始條件:棧S已存在。

操作結(jié)果:將S清為空棧。

StackLength(&S)

初始條件:棧S已存在。

操作結(jié)果:返回棧S的長度。

StackEmpty(&S)

初始條件:棧S已存在。

操作結(jié)果:若S為空棧,則返回TRUE,否則返回FALSE。

GetTop(S,&e)

初始條件:棧S已存在。

操作結(jié)果:若棧S不空,則以e返回棧頂元素。

StackTraverse(S,visit())

初始條件:棧S己存在。

操作結(jié)果:從棧底到棧頂依次對S中的每個元素調(diào)用函數(shù)visit().

}ADTstack

2.主程序流程

基本框架:

入櫛

獨入

1入隊列

r

出櫛

駛出<

出隊列

c----->過場、在場與等待車輛信息查找(棧數(shù)組)

杳詢

榻作《----?

修改在場主輛信息修改(桂)

【刪除一

?等待車輛隊列刪除(隊列)

汨錄-------?

1已收取的總停車費用

(1).車輛信息類型

typedefstruct{

intHtime;

intMtime;

}Time;//簡樸模擬時間信息,記錄小時和分鐘

typedefstruct{

charnum[20];

◎Timereachtime;

Timeleavetime;

}carinfo;

(2).棧類型

typedefstruetstack

{carinfocar[5];

。inttop;}Stack;

intinistack(Stack*S)〃初始化棧

S->top=-l;

return1;

)

voidPush(Stack*S,carinfox)〃進(jìn)棧操作

{oS->toP++;

S->car[S->top]=x;

。printf("進(jìn)站成功!\n〃);

voidPop(Stack*S,carinfox)〃出棧操作

{if(S->top=-l)

。p「intf(〃空棧,無法出棧!〃);

x=S—>car[S->top];

S->top—;

printf(〃出棧成功!\n〃);

)

intIsEmpty(Stack*S)〃判斷???/p>

{if(S—>top==-l)

。return1;

else

greturn0;

)

(3).隊列類型(便道)

typedefstructNode(

carinfodata;

structNode*next;

}QueueNode;

typedefstruct{

QueueNode*front;

QueueNode*rear;

}Queue,*1inkQueue;

intEnterQ(Queue*Q,carinfox);

intiniQueue(Queue*Q)//初始化便道

{Q->front=(QueueNode*)malloc(sizeof(QueueNode))//申

請節(jié)點

if(Q->front!=NULL)

{Q->rear=Q->front;

。Q—>front—>next=NULL;

oreturn1;

}

elsereturn0;

)

intEnterQ(Queue*Q,carinfox)//進(jìn)便道

{QueueNode*newNode;

newNode=(QueueNode*)malloc(sizeof(QueueNode));

if(newNode!=NULL)

!

newNode->data=x;

newNode->next=NULL;

Q->rear->next=newNode;

Q->rear=newNode;

return1;

0}

elsereturn0;

)

intDe1eteQ(Queue*Q,carinfox)〃出便道

I

QueueNode*p;

op=Q->front->next;

if(Q—>front==Q->rear)〃判斷便道是否有車

oreturn0;

x=p->data;

if(p->next==Q—>rear)

(

8Q->rear=Q->front;

8Q->front->next=NULL;

)

Q—>front->next=p->next;

。free(p);

return1;

)

(4)主函數(shù)及其他函數(shù)的算法

voidmain()

{Queue*Q;

Stack*S=NULL;

S=(Stack*)mal1oc(sizeof(Stack));//申請棧節(jié)點

Q=(linkQueue)malloc(sizeof(Queue));//申請便道節(jié)點

inti;

iniQueue(Q);〃初始化調(diào)用

inistack(S);〃初始化調(diào)用

printf('\n****************************歡迎使用停車場管理界面******

************************\n");

printf(〃*******本停車場每小時收費2元,停車不滿半小時不收費,超過半小時按一

小時收費*******");

printGraph();

whi1e(1)

(

Printf(,z\n請輸入操作”);

scanf(〃%d”,&i);

switch(i)

(

case1:Arrive(S,Q);printGraph();break;

case2:Departure(S,Q);printGraph();break;

case3:Print(S);printGraph();break;

case0:exit(1);break;

case4:PrintQ(Q);break;

case5:Search(S);break;

default:printf("重新輸入");printGraph();

)

}

)

voidLpush(Stack*S,carinfox)

{Push(S,x);〃進(jìn)臨時棧

)

voidLPop(Stack*S,carinfox)

(

Pop(S,x);

)

intArrive(Stack*S,Queue*Q)//車輛到達(dá)

(

carinfox;

ointa;

。printf(〃輸入車牌號:〃);

oseanf(〃%s",x.num);

。printf("請輸入進(jìn)車場的時間(**:**):〃);

oscanf("%d:%d”,&x.reachtiine.Htime,&x,reachtime.Mtime);

if(S->top==Size-1)

0{

printf(〃車場已滿,不能進(jìn)入,進(jìn)便道\n〃);

a=EnterQ(Q,x);//遞歸

調(diào)用進(jìn)便道操作

gif(a==l){

gp「intf("0K\n〃);

g}

?>else

oprintffNo!\n");

)

oelse

°(

Push(S,x);

。)

return1;

I

intDeparture(Stack*S,Queue*Q)//車輛離開操作

{carinfoa;

?>intparktime,paytime;

ocharx[20];

Timeleavetime;

oStack*p=NULL;

◎intpointl=S->top;

ointpoint2=S->top;

Printf(”請輸入要拜別的車牌號:〃);

scanf(〃%s〃,x);

while(point1!=-1&&point2!=-l)

(

if(stremp(S->car[point1].num,x)==0)//匹配函數(shù),是否輸入的

信息與車場信息匹配

(

gprintf("請輸入要離開的時間(**:**):〃);

ascanf(〃%d:%d〃,&leavetime.Htime,&1eavetime.Mtime);

for(;point1!=S—>top;point1++,point2++)//

掃描直到結(jié)束

S->car[pointl]=S->car[point2];〃假如找到了,

出車

S->top—;

printf(〃成功出車場\n〃);

eparktime=(1eavetime.Htime—S->car[pointl].reachtime.Htime)

^60+(1eavetime.Mtime-S->car[point1].reachtime.Mtime);

gif(1eavetime.Htime-S->car[pointl].reachtime.Htime>=10)payt

ime=10;

。elseif(leavetime.Mtime-S->car[pointl].reachtime.Mtime

<=30)paytime=1eavetime.IItime-S->car[pointi].reachtime.H

time;

。eIsepaytime=leavetime.Htime-S->car[point1].reachtime.II

time+1;

oprintf(〃其在停車場內(nèi)停留時間為%d分鐘,實際按照%(1小時計費,所需付費

為:%d元。\n”,parktime,paytime,paytime*2);

gpoint2=-1;

)

。else{

point2=pointl;

8pointl---;

)

I

if(Q->front!=Q->rear){

ga=Q->front->next->data;

printf("從便道進(jìn)入停車場的車牌號:%s",a.num);

。printf("請輸入進(jìn)車場的時間:%d:%d",1eavetime.Htime,1eavetime.Mt

ime);

scanf(,z%d:%d",&a.reachtime.Htime,&a.reachtime.Mtime);

Push(S,a);De1eteQ(Q,Q->front->next->data);

)

if(pointl==T)//假如到結(jié)束了,還沒有找到,則輸出信息

{

。printf("此車沒有在停車場!\n");

return1;

)

}

voidPrintl(carinfox)//簡樸的輸出操作

(

printf("車牌號:%s\n",x.num);

printf(”進(jìn)車場的時間:%d:%d\n”,x.reachtime.Htime,x.reachtime.M

time);

printf(,z\n------------------------\n");

}

voidPrint(Stack*S)//打印車場信息

{carinfox;

intpoint=S—>top;//從棧頭開始

if(S->top==-l)

8Printf("車場沒有車輛登記進(jìn)入!\n");

else

。{while(point!=-1)

8f

printf(〃\n-----------------------\n〃);

printf(〃車的位置號:%d\n〃,point);

?x=S—>car[point];//把依次掃描到的信息賦值給x

Printi(x);〃調(diào)用輸出函數(shù)

point---;〃輸出所有的車場信息

。printf("顯示車場信息成功!\n");

}

voidPrintQ(Queue*Q)〃打印便道車輛信息

{

QueueNode*p;

o//p=(QueueNode*)malloc(sizeof(Queue));//申請結(jié)點

p=Q->front->next;

if(Q—>front!=Q—>rear){/*判斷通道上是否有車*/

叩rintf(〃\n等待車輛的車牌號為:〃);

while(p!=NULL){//判斷是否到結(jié)尾

printf('%s”,p->data.num);

P=p->next;〃假如沒找到,繼續(xù)向下找

8}

oprintf("\n");

)

else

printf("\n\t\t\t便道里沒有車。\n");

)

intSearch(Stack*S)//按車牌號查找車輛信息

{?charx[20];

?Timeleavetime;

Stack*p=NULL;

?carinfoa;

?intpointl=S->top;

ointpoint2=S—>top;

printf(〃請輸入要查找的車牌號:");

seanf("%sz,,x);

whi1e(point1!=T&&point2!=-1)

(

if(strcmp(S->car[point1],num,x)==0)//匹配函

數(shù),是否輸入的信息與車場信息匹配

?{for(;pointl!=S—>top;point1++,point2++)//掃描直到

結(jié)束

S—>car[pointl]=S->car[point21;//假如找至IJ

了,輸出信息

printf("該車目前在停車場中。\n");

°point2=-1;

)

。else{

point2=pointl;

gpoint1一;

}

)

if(pointl-1)〃假如到結(jié)束了,還沒有找到,則輸出信息

{

。printf(〃此車沒有在停車場!”);

return1;

voidprintGraph(){

ointi;

oprintf(〃\n〃);

for(i=0;i<80;i++)printf。,);

printf(〃\n\t\t\t******請選擇操作序號******〃);

printf("\n\n\t\t\t----車輛到達(dá)請選1-----〃);

Printf(n\n\n\t\t\t-----車輛離開請選2------〃);

printf("\n\n\t\t\t---查詢停車場信息請選3―〃);

printff\n\n\t\t\t——查詢便道信息請選4—〃);

printf(,z\n\n\t\t\t一按車牌號查找請選5一");

printf(〃\n\n\t\t\t-----退出系統(tǒng)請選0-----");

printfC\n\nH);

for(i=0;i<80;i++)printfC-n);

3.各模塊之間的調(diào)用關(guān)系

主函數(shù)voidmain()

初始化調(diào)用iniQueue(Q);

inistack(S);

調(diào)用到達(dá)函數(shù)Arrive(S,Q);

調(diào)用離開函數(shù)Departure(S);

調(diào)用打印信息函數(shù)printGraph()

三、測試數(shù)據(jù)

所有合法數(shù)據(jù):

1.主界面

2.到達(dá):

■'D:\2\Debug\2.exe

KMXXXXXXXXXXXXXXXXXXXXXXXXX]卬用停'車_場I管^壬里界_面"XKXXXXXXXXXMXXXXXXXXXXXXXXXXXJ

?本停車場每小時收費2元.停車不滿半小時不收費,超過半小時按一小時收費?

******請選擇操作序號******

---車輛到達(dá)請選i-------

---車輛離開請選2一—

一查詢停車場信息請選3—

一查詢便道信息請選4—

一按車牌號查找請選5—

---退出系統(tǒng)請選。----

作1

號LF0

.i

人J1i8

車n0"<12

成.

******請選擇操作序號******

---車輛到達(dá)請選1-------

——車輛離開請選2一—

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

---退出系統(tǒng)請選。---

債辨心談作1

輸入車牌號:JW1123

有鮑入進(jìn)車場的時間<**:**):13:30

3.離開:

請選擇操作序號*****

---車輛到達(dá)請選1一一

一一車輛離開請選2——

一查詢停車場信息請選3—

一查詢便道信息請選4—

一按車牌號查找請選5—

---退出系統(tǒng)請選。---

請輸入操作2

請輸入要離去的車牌號:JWH23

,~開的時間<**:?*>:14:15

具S在停車場內(nèi)停留時間為45分鐘,實際按照1小時計費,所需付費為:2元。

****請選擇操作序號***

---車輛到達(dá)請選1-------

一一車輛離開請選2

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

---退出系統(tǒng)請選0-------

請輸入操作2

請箍入要離去的車牌號:LF0118

嬲畬要曹開的時間<**:”〉:13=45

矍翌曾奉招內(nèi)停留時間為皿分鐘,實際按照2小時計費,所需付費為,4元。

******請選擇操作序號******

----車輛到達(dá)請選1------

一一車輛離開請選2一—

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5―

----退出系統(tǒng)請選。----

人操

作2

車牌

3時間13

要^:10

出<*

其§

內(nèi)

留時

實際按照1小時計費,所需付費為:2元。

******1青選擇操作序號******

----車輛到達(dá)請選I------

一一車輛離開請選2一—

一查詢停車場信息請選3—

一查詢便道信息請選4—

一按車牌號查找請選5—

----退出系統(tǒng)請選。----

人2

時23

理<*:55

內(nèi)

(丁,實際按照1。小時計費,所需付費為:2。元。

(若便道有車等待)輸出從便道中進(jìn)入停車場的車牌號、進(jìn)車場時間(即為從便道中出車

的時間)、進(jìn)站成功!

■D:\2\Debug\2.exeI=?I回

一一車輛離開請選2一—

一查詢停車場信息請選3—

一查詢便道信息請選4—

一按車牌號查找請選5-

----退出系統(tǒng)請選。----

作1

馬03

.

勺S<

匕**:4?*>.3:45

.,進(jìn)便道

請選擇操作序號

----車輛到達(dá)請選1---------

一一車輛離開請選2一—

一查詢停車場信息請選3—

一查詢便道信息請選4—

一按車牌號查找請選5—

----退出系統(tǒng)請選。----

操作

請2

的車

的時

一4:34

成<*

內(nèi)停

S間為

停車

車牌

從所需付費為:4元。

:34

4.輸出車場信息

******請選擇操作序號******

----車輛到達(dá)請選1-------

----車輛離開請選2-------

一查詢停車場信息請選3—

一查詢便道信息請選4一

—按車牌號查找請選5—

----退出系統(tǒng)請選。----

請輸入操作。3

至由謔3丁

霹嬴需間,2:34

車的位置號;0

季牌號:01

迸暈玲的時間:i:23

應(yīng)^^信息麗;

******請選擇操作序號******

----車輛到達(dá)請選1-------

一--車輛離開請選2——

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

---退出系統(tǒng)請選。----

軍揚沒有車輛登記進(jìn)入,

5輸出便車道信息

****i青選擇操作序號*****

---車輛到達(dá)請選1----

---車輛離開請選2---

一查詢停車場信息請選3—

一查詢便道信息請選4一

—按車牌號查找請選5—

---退出系統(tǒng)請選。---

請輸入操作4

便道里沒有車。

請輸入操作

******請選擇操作序號******

----車輛到達(dá)請選1----

———車輛離開請選2

一查詢停車場信息請選3—

一查詢便道信息請選4—

一按車牌號查找請選5—

---退出系統(tǒng)請選。----

青輸入操作4

軍待車輛的車牌號為:8304

6、按車牌號查找信息

39C:\Windows\system32\cmd.exe

、1

.0。1

內(nèi)

才間

場-

I車£BZ

nX06:00

r!

<*

******請選擇操作序號******

----車輛到達(dá)請選1-------

----車輛離開請選2-------

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

----退出系統(tǒng)請選0-------

非法數(shù)據(jù)

1.主界面:

?D:\2\Debug\2.exe

?歡迎使用停車場管理界面

本停車場每小時收費2元,停車不滿半小時不收費,超過半小時按一小時收費

*???*請選擇操作序號**??*

----車輛到達(dá)請選1---------

一一車輛離開請選2

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

----退出系統(tǒng)請選。----

道輸公舞作6

董薪輸入

2.車輛到達(dá):

*D:\2\Debug\2.exeIoI回I

XXXXXX請?選J舉操作序^號XXXXXM

——車輛到達(dá)請選I——

-—車輛離開請選2——

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

----退出系統(tǒng)請選0---------

車餌

號:001

車場的時間(**:24:05

輸入

3***請選擇操作序號*****

——車輛到達(dá)請選工——

----車輛離開請選2---------

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選6—

----退出系統(tǒng)請選。----

贄入

售1

車001

喜.

出間

入.9

B23:61

3.車輛離開

,D:\2\Debug\2.exe-I回ay

一查詢便道信息請選4—

一按車牌號查找請選5—

---退出系統(tǒng)請選0----

父人

s主

-車001

T事

曹人

nI223

Lk

V功

X-,

******請選擇操作序號*****

---車輛到達(dá)請選1----

---車輛離開請選2----

一查詢停車場信息請選3—

一查詢便道信息請選4一

一按車牌號查找請選5—

---退出系統(tǒng)請選0----

操作

A入2

時車

24

的時

江<E?34

的時23

住67

一E

的時23

M修

2間55

內(nèi)

停留

其實際按照10小時計費,所需付費為:2。元。

四、源程序及系統(tǒng)文獻(xiàn)使用說明

#include<stdio.h>

#inc1ude<std1ib.h>

#include<string.h>

#defineSize2

#defineprice5

typedefstruct

intHtime;

intMtime;

}Time;//簡樸模擬時間信息,記錄小時和分鐘

typedefstruct{

ocharnum[20];

?Timereachtime;

Time1eavetime;

}carinfo;//通過結(jié)構(gòu)來保存來車的車牌號,到達(dá)時間,

離開時間

typedefstructstack

(

ocarinfocar[5];

。inttop;

}Stack;

typedefstructNode{

carinfbdata;

structNode*next;

}QueueNode;〃結(jié)點的定義

typedefstruct{

QueueNode*front;

QueueNode*rear;

}Queue,*linkQueue;〃定義隊列結(jié)點

intEnterQ(Queue*Q,carinfox);

intinistack(Stack火S)//初始化棧

(

S->top=-l;

。return1;

)

voidPush(Stack*S,carinfox)//進(jìn)棧操作

(

?S->top++;

S—>car[S->toP]=x;

。printf("進(jìn)站成功!\n”);

}

voidPop(Stack*S,carinfox)〃出棧操作

(

if(S->top=?1)

。printf("空棧,無法出棧!”);

x=S->car[S—>top];

S->top--;

Printf("出棧成功!'n”);

)

intIsEmpty(Stack*S)〃判斷???/p>

(

if(S—>top==-l)

?return1;

◎else

return0;

)

intiniQueue(Queue*Q)//初始化便道

(

Q->front=(QueueNode*)ma1loc(sizeof(QueueNode));//申請節(jié)

if(Q->front!=NULL)

{

Q—>rear=Q->front;

Q—>front—>next=NULL;

。return1;

)

elsereturn0;

)

intEnterQ(Queue*Q,carinfox)〃進(jìn)便道

(

QueueNodenewNode;

newNode=(QueueNode*)ma1loc(sizeof(QueueNode));

if(newNode!=NULL)

(

。newNode->data=x;

newNode->next=NULL;

Q->rear->next=newNode;

Q->rear=newNode;

return1;

0)

eIsereturn0;

)

intDe1eteQ(Queue*Q,carinfox)//出便道

(

。QueueNode*p;

。P=Q->front->next;

if(Q->front==Q->rear)//判斷便道是否有車

。。return0:

x=p->data;

if(p—>next==Q->rear)

°{

gQ->rear=Q->front;

Q->front—>next=NULL;

)

Q->front->next=p->next;

°free(p);

return1;

)

voidLpush(Stack*S,carinfbx)

{-Push(S,x);//進(jìn)臨時棧

)

voidLPop(Stack*S,carinfox)

(

Pop(S,x);

)

intArrive(Stack*S,Queue*Q)//車輛到達(dá)

carinfox;

。inta;

。printf(“輸入車牌號:“);

。scanf(0%sM,x.num);

。printf("請輸入進(jìn)車場的時間(**:**):**);

scanf("%d:%d”,&x,reachtime.Htime,&x.reachtime.Mtime);

if(S->top==Size—1)

。(

3printf("車場已滿,不能進(jìn)入,進(jìn)便道\n”);

a=EnterQ(Q,x);〃遞歸調(diào)用進(jìn)便

道操作

^if(a==l){

ooprintf(uOK\nH);

6)

ooe1se

“printfC'No!\nn);

)

。eIse

0(

Push(S,x);

°}

retum1;

intDeparture(Stack*S,Queue*Q)//車輛離開操作

{carinfoa;

。intparktime,paytime;

ocharx[20];

??Timeleavetime;

oStack*p=NULL;

intpoint1=S->top;

。intpoint2=S->top;

Printf(”請輸入要拜別的車牌號:”);

scanf(H%sM,x);

while(pointI!=-1&&point2!=-l)

(

if(strcmp(S->car[pointl].num,x)==0)〃匹配函數(shù),是否輸入的信息與車

場信息匹配

6{

。printf(”請輸入要離開的時間(**:**):”);

oscanf("%d:%d",&leavetime.Htime,&1eavetime.Mtime);

for(;pointl!=S—>top;pointl++,point2++)〃掃描直到結(jié)束

S->car[point1]=S—>car[poin

溫馨提示

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

評論

0/150

提交評論