版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國高折射玻璃微珠市場現(xiàn)狀分析及發(fā)展前景規(guī)劃研究報告
- 2025-2030年中國鐵道用鋼材市場深度調(diào)研及投資戰(zhàn)略規(guī)劃分析報告
- 2025-2030年中國鋼筋加工設(shè)備行業(yè)市場運行狀況及未來發(fā)展趨勢分析報告
- 2025-2030年中國采鹽市場發(fā)展?fàn)顩r及投資前景規(guī)劃研究報告
- 2024物業(yè)管理費項目服務(wù)合同(含綠化養(yǎng)護(hù)專項)3篇
- 2025年度勞動合同解除與再就業(yè)服務(wù)合同
- 2025年度車輛過戶合同協(xié)議書(含交通事故責(zé)任)
- 2025年淘寶店合伙合同模板:玩具電商合作推廣框架協(xié)議
- 絲網(wǎng)印刷在包裝行業(yè)的應(yīng)用考核試卷
- 2025年度葡萄采摘園合作經(jīng)營合同模板范文
- 洞悉現(xiàn)狀 明確方向-初三上期末家長會
- 質(zhì)控護(hù)理管理制度內(nèi)容
- 幼兒園幼教集團(tuán)2025學(xué)年第二學(xué)期工作計劃
- 2025版高考物理復(fù)習(xí)知識清單
- 2024年考研管理類綜合能力(199)真題及解析完整版
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 六年級下冊【默寫表】(牛津上海版、深圳版)(英譯漢)
- 2025年度安全檢查計劃
- 2024年度工作總結(jié)與計劃標(biāo)準(zhǔn)版本(2篇)
- 北京外企勞動合同范例
- 《護(hù)患溝通》課件
評論
0/150
提交評論