-
大小: 876KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-08
- 語(yǔ)言: C/C++
- 標(biāo)簽: C++??數(shù)據(jù)結(jié)構(gòu)??課程設(shè)計(jì)??
資源簡(jiǎn)介
設(shè)停車場(chǎng)是一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,一次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車廠內(nèi)已停滿n輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦有車開(kāi)走,則排在便道上的第一輛車即可開(kāi)入,當(dāng)停車場(chǎng)內(nèi)某輛車要離開(kāi)時(shí),在它之后進(jìn)入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開(kāi)出大門外,其他車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開(kāi)停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。

代碼片段和文件信息
#include
using?namespace?std;
struct?car{
int?id;
int?arrive;
int?leave;
int?time;
car?*next;
};
struct?park{
???car?*base;
???int?top;
???int?size;
};
struct?queue{
car?*first;
car?*rear;
int?size;
};
int?iniqueue(queue?&q)
{
???q.first=NULL;
???q.rear?=NULL;
???q.size=0;
???return?1;
}
int?insert_queue(queue?&qcar?c)
{
???if(q.first==NULL)
???{
???q.first=new?car;
???*q.first=c;
???q.first->next=0;
???q.rear=q.first;
???q.size++;
???return?1;
???}
???else
???{
???q.rear->next=new?car;
???q.rear=q.rear->next;
???*q.rear=c;
???q.rear->next=0;
???q.size++;
???return?1;
???
???}
}
int??push(park?&park1car?w)
{
????park1.base[park1.top++]=w;
return?1;//進(jìn)棧
}
car?pop(park?&park1)
{
if(park1.top)
return?park1.base[--park1.top];//出棧
}
car?delete_queue(queue?&q)
{
car?w;
w.arrive=w.id=w.leave=w.time=0;??w.next=0;
????if(!q.first)
{
cout<<“便道上無(wú)車“< return?w;
}
else
{
car?*p=q.first;
q.first=q.first->next;
w=*p;
delete?p;
q.size--;
return?w;
}
}
int?inistack(park?&sint?n)
{
s.base=NULL;
s.base=new?car[n];
if(!s.base)
{
cout<<“申請(qǐng)內(nèi)存失敗“< return?0;
}
s.size=n;
s.top=0;
return?1;
}
int?stack_full(park?&park1)
{
if(park1.top return?0;
else?return?1;
}
int?queue_empty(queue?&q)
{
return?!q.size;
}
int?assign(queue?&qpark?&park1park?&park2char?ordercar?c)
{
if(order==‘A‘)
{
c.arrive=c.time;
insert_queue(qc);
if(!queue_empty(q))//隊(duì)列不空
{
???????????if(stack_full(park1))
???{cout<<“車牌為“< ???else
???{
???push(park1?delete_queue(q)?);
?//??cout< ???cout<<“車牌為“< ???}
}
}
else?if(order==‘D‘)
{
?
?for(;park1.top?&&?park1.base[park1.top-1].id!=c.id;)
?push(park2pop(park1));//讓車道
?if(!park1.top)//無(wú)找到
?{
?cout<<“no?this?car“< ?for(;park2.top;)
?push(park1pop(park2));
?return?0;
?}
?????????else
?{
?car?toleave=pop(park1);
?toleave.leave=c.time;
?c.leave=c.time;
?cout<<“車牌為“< ?????????????cout<<“總的停留時(shí)間為:“< ?for(;park2.top;)
?push(park1pop(park2));//停車場(chǎng)進(jìn)車,park2退車?
?
?
?if(!queue_empty(q))//隊(duì)列不空
?{
???????????? ?push(park1delete_queue(q));//進(jìn)車場(chǎng),刪除隊(duì)列頭?
?park1.base[park1.top-1].arrive=c.leave;//
????????
?}
?}
}
else?if(order==‘E‘)
{
exit(0);
}
else
{
cout<<“非法輸入“< return?0;
}
return?1;
}
int?main()
{
park?park1park2;
queue?q;
int?n=0;
cout<<“停車場(chǎng)容量“< cin>>n;
inistack(park1n);
inistack(park2n);
iniqueue(q);
char?order=‘?‘;
int??id;
int??time;
car??w;
for(;;)
{
cout<<“請(qǐng)輸入車信息“?< cin>>order>>id>>time;
????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3475??2009-06-10?20:33??停車場(chǎng)管理\1.cpp
?????文件???????3341??2009-06-10?20:33??停車場(chǎng)管理\1.dsp
?????文件????????510??2009-06-10?20:43??停車場(chǎng)管理\1.dsw
?????文件??????41984??2009-06-10?20:43??停車場(chǎng)管理\1.ncb
?????文件??????48640??2009-06-10?20:43??停車場(chǎng)管理\1.opt
?????文件???????1316??2009-06-10?20:33??停車場(chǎng)管理\1.plg
?????文件?????548973??2009-06-10?20:33??停車場(chǎng)管理\Debug\1.exe
?????文件?????789404??2009-06-10?20:33??停車場(chǎng)管理\Debug\1.ilk
?????文件?????261005??2009-06-10?20:33??停車場(chǎng)管理\Debug\1.obj
?????文件????1996300??2009-06-06?18:59??停車場(chǎng)管理\Debug\1.pch
?????文件????1098752??2009-06-10?20:33??停車場(chǎng)管理\Debug\1.pdb
?????文件??????82944??2009-06-10?20:33??停車場(chǎng)管理\Debug\vc60.idb
?????文件?????110592??2009-06-10?20:33??停車場(chǎng)管理\Debug\vc60.pdb
?????目錄??????????0??2009-06-13?00:41??停車場(chǎng)管理\Debug
?????目錄??????????0??2009-06-13?00:41??停車場(chǎng)管理
-----------?---------??----------?-----??----
??????????????4987236????????????????????15
評(píng)論
共有 條評(píng)論