2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  一、需求分析</b></p><p>  1、以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。</p><p>  2

2、、用戶輸入汽車信息后,程序?qū)γ恳唤M輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便到上的停車位置;若是車輛離去,則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)繳納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。</p><p>  3、本程序要求棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。</p><p><b>  4、測(cè)試數(shù)據(jù):</b></p><p&

3、gt;  設(shè)n=2,輸入數(shù)據(jù)為:(“A”,1,5),(“A”,2,10),(“D”,1,15),(“A”3,20),</p><p>  (“A”,4,25),(“A”,5,30),(“D”,2,35),(“D”,4,40),(“E”,0,0)。</p><p>  其中:“A”表示到達(dá)(Aiiival);“D”表示離去(Departure);“E”表示輸入結(jié)束(End)。</p&g

4、t;<p>  5、程序執(zhí)行的命令為:</p><p>  1)創(chuàng)建停車場(chǎng);2)創(chuàng)建便到;3)執(zhí)行對(duì)車輛的運(yùn)算;4)輸出所需的數(shù)據(jù)。</p><p><b>  二、概要設(shè)計(jì)</b></p><p>  1、設(shè)定棧的抽象數(shù)據(jù)類型定義:</p><p>  ADT Stack{</p><

5、;p>  數(shù)據(jù)對(duì)象:D={ai|ai∈CharSet,i=1,2,…,n,n≥0}</p><p>  數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p><b>  基本操作:</b></p><p>  InitStack(&S)</p><p&g

6、t;  操作結(jié)果:構(gòu)造一個(gè)空棧S。</p><p>  StackEmpty(S)</p><p>  初始條件:棧S已存在。</p><p>  操作結(jié)果:若棧S為空棧,則返回TURE,否則FALSE。</p><p>  StackLength(S)</p><p>  初始條件:棧S已存在。</p>

7、<p>  操作結(jié)果:返回S的元素個(gè)數(shù),即棧的長(zhǎng)度。</p><p>  GetTop(S,&e)</p><p>  初始條件:棧S已存在且非空。</p><p>  操作結(jié)果:用e返回S的棧頂元素。</p><p>  Push(&S,e)</p><p>  初始條件:棧S已存在。&l

8、t;/p><p>  操作結(jié)果:插入元素e為新的棧頂元素。</p><p>  Pop(&S,&e) </p><p>  初始條件:棧S已存在且非空。</p><p>  操作結(jié)果:刪除S的棧頂元素,并用e返回其值。</p><p>  StackTraverse(S,visit

9、())</p><p>  初始條件:棧S已存在且非空。</p><p>  操作結(jié)果:從棧底到棧頂依次對(duì)S的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失敗。</p><p>  }ADT Stack</p><p>  2、設(shè)定隊(duì)列的抽象數(shù)據(jù)類型定義:</p><p>  ADT Queue{

10、</p><p>  數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p>  數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p>  約定其中a1端為隊(duì)列頭,an端為隊(duì)列尾</p><p><b>  基本操作:</b>&l

11、t;/p><p>  InitQueue(&Q)</p><p>  操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q。</p><p>  QueueEmpty(Q)</p><p>  初始條件:隊(duì)列Q已存在。</p><p>  操作結(jié)果:若Q為空隊(duì)列,則返回TURE,否則FALSE。</p><p>  

12、QueueLength(Q)</p><p>  初始條件:隊(duì)列Q已存在。</p><p>  操作結(jié)果:返回Q的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度。</p><p>  GetHead(Q,&e)</p><p>  初始條件:Q為非空隊(duì)列。</p><p>  操作結(jié)果:用e返回Q的對(duì)頭元素。</p>&

13、lt;p>  EnQueue(&Q,e)</p><p>  初始條件:隊(duì)列Q已存在。</p><p>  操作結(jié)果:插入元素e為Q的新的隊(duì)尾元素。</p><p>  DeQueue(&Q,&e)</p><p>  初始條件:Q為非空隊(duì)列。</p><p>  操作結(jié)果:刪除Q的隊(duì)頭元

14、素,并用e返回其值。</p><p>  QueueTraverse(Q,visit())</p><p>  初始條件:Q已存在且非空。</p><p>  操作結(jié)果:從隊(duì)頭到隊(duì)尾,依次對(duì)Q的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失敗。</p><p>  }ADT Queue</p><p&

15、gt;  3、設(shè)定停車場(chǎng)的抽象數(shù)據(jù)類型為:</p><p>  ADT Park{</p><p>  數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p>  數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p><b>  基本操作:

16、</b></p><p>  Arrival(Park &P,Shortcut &S,int n)</p><p>  初始條件:棧S存在。</p><p>  操作結(jié)果:在輸入車牌號(hào)和進(jìn)場(chǎng)時(shí)間后,輸出停車的車道。</p><p>  Leave(Park &P,Park &P1,Shortcut

17、&S,int cost)</p><p>  初始條件:棧S存在且非空。</p><p>  操作結(jié)果:在輸入車牌號(hào)和離場(chǎng)時(shí)間后,輸出車停留時(shí)間以及費(fèi)用。</p><p>  } ADT Park</p><p>  4、設(shè)定便到的抽象數(shù)據(jù)類型為:</p><p>  ADT CarPtr{</p&g

18、t;<p>  數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p>  數(shù)據(jù)關(guān)系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…,n}</p><p><b>  基本操作:</b></p><p>  EnQueue(S,number,ar_time)<

19、/p><p>  初始條件:停車場(chǎng)已滿,隊(duì)列存在。</p><p>  操作結(jié)果:在輸入車牌號(hào)和進(jìn)場(chǎng)時(shí)間后,輸出車停留在便道上的位置。</p><p>  DeQueue(S,w)</p><p>  初始條件:停車場(chǎng)有車輛離開。</p><p>  操作結(jié)果:輸出由便到進(jìn)入停車場(chǎng)的汽車車牌號(hào)</p><

20、;p>  DeQueue(S,q)</p><p>  初始條件:便道上有車離開。</p><p>  操作結(jié)果:輸出離開車輛車牌以及停留時(shí)間。</p><p>  } ADT CarPtr</p><p>  5、本程序包含五個(gè)模塊</p><p><b>  1)主程序模塊:</b>&

21、lt;/p><p>  Void main(){</p><p><b>  初始化;</b></p><p><b>  Do{</b></p><p><b>  接受命令;</b></p><p><b>  處理命令;</b>&

22、lt;/p><p>  } while (“命令”=”退出”);</p><p><b>  }</b></p><p>  2)棧模塊——實(shí)現(xiàn)棧抽象數(shù)據(jù)類型</p><p>  3)隊(duì)列模塊——實(shí)現(xiàn)隊(duì)列抽象數(shù)據(jù)類型</p><p>  4)停車場(chǎng)模塊——實(shí)現(xiàn)停車場(chǎng)抽象數(shù)據(jù)類型</p>

23、<p>  5)便道模塊——實(shí)現(xiàn)便到抽象數(shù)據(jù)類型</p><p>  各模塊之間的調(diào)用關(guān)系如下:</p><p><b>  主程序模塊</b></p><p><b>  ↓ </b></p><p><b>  棧模塊</b></p><p&g

24、t;<b>  ↓</b></p><p><b>  隊(duì)列模塊</b></p><p><b>  ↓</b></p><p><b>  停車場(chǎng)模塊</b></p><p><b>  ↓</b></p><p

25、><b>  便道模塊</b></p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p><b>  1、車輛類型</b></p><p>  typedef struct Car1{//車</p><p>  int number;//汽車車號(hào)</p>

26、;<p>  int ar_time;//汽車到達(dá)時(shí)間</p><p><b>  }CarNode;</b></p><p><b>  2、棧類型</b></p><p>  typedef struct{//停車場(chǎng)</p><p>  CarNode *base;//停車場(chǎng)的堆棧

27、底</p><p>  CarNode *top;//停車場(chǎng)的堆棧頂</p><p>  int stacksize;</p><p><b>  }Park; </b></p><p>  棧的基本操作設(shè)置如下:</p><p>  Void InitStack(Stack &S)<

28、;/p><p>  //初始化,設(shè)S為空棧</p><p>  Int StackLength(Stack S)</p><p>  //返回棧S的長(zhǎng)度S.size</p><p>  Status GetTop(Stack S)</p><p>  //若S為空棧,則返回TURE;否則返回FALSE</p>

29、<p>  Status GetTop(Stack S,ElemType e)</p><p>  //若棧S不空,則以e帶回棧頂元素并返回TURE,否則返回FALSE</p><p>  Status Push(Stack &S,ElemType e)</p><p>  //若分配空間成功,則在S的棧頂插入新的棧頂元素e,并返回TURE<

30、;/p><p>  //否則棧不變,并返回FALSE</p><p>  Status Pop(Stack &S,ElemType &e)</p><p>  //若棧不空,則刪除S的棧頂元素并以e帶回其值,且返回TURE</p><p>  //否則返回FALSE</p><p>  Void Stack

31、Traverse(Stack S,Status(*visit)(ElemType e))</p><p>  //從棧底到棧頂依次對(duì)S中的每個(gè)結(jié)點(diǎn)調(diào)用函數(shù)visit</p><p>  其中部分操作的算法:</p><p>  void InitStack(Park &P,int n)</p><p><b>  {//初始

32、化停車場(chǎng)</b></p><p>  P.top=P.base=(CarNode*)malloc(n*sizeof(Car1));</p><p>  P.stacksize=0;</p><p><b>  }</b></p><p>  void Push(Park &P,CarNode e)&l

33、t;/p><p><b>  {//車進(jìn)入停車場(chǎng)</b></p><p><b>  *P.top=e;</b></p><p><b>  P.top++;</b></p><p>  ++P.stacksize;</p><p><b>  }

34、</b></p><p>  void Pop(Park &P,CarNode &e)</p><p><b>  {//車離開停車場(chǎng)</b></p><p><b>  --P.top;</b></p><p><b>  e=*P.top;</b>

35、;</p><p>  --P.stacksize;</p><p><b>  }</b></p><p><b>  3、隊(duì)列類型</b></p><p>  typedef struct Car2</p><p><b>  {//車</b><

36、;/p><p>  int number;//汽車車號(hào)</p><p>  int ar_time;//汽車到達(dá)時(shí)間</p><p>  struct Car2 *next;</p><p><b>  }*CarPtr;</b></p><p>  typedef struct</p>

37、<p><b>  {//便道</b></p><p>  CarPtr front;//便道的隊(duì)列的對(duì)頭</p><p>  CarPtr rear;//便道的隊(duì)列的隊(duì)尾</p><p>  int length;</p><p>  }Shortcut;</p><p>  隊(duì)列的

38、基本操作設(shè)置如下:</p><p>  Status TnitQueue(LinkQueue &Q)</p><p><b>  //構(gòu)造一個(gè)空列Q</b></p><p>  Status QueueEmpty(LinkQueue Q)</p><p>  //若隊(duì)列Q為空隊(duì)列,則返回TURE,否則返回FALS

39、E</p><p>  Status QueueLength(LinkQueue Q)</p><p>  //返回Q的元素個(gè)數(shù),即為隊(duì)列的長(zhǎng)度</p><p>  Status GetHead(LinkQueue Q,QElemType &e)</p><p>  //若隊(duì)列不空,則用e返回Q的隊(duì)頭元素,并返回OK;否則返回ERRO

40、R</p><p>  Status EnQueue(LinkQueue &Q, QElemType e)</p><p>  //插入元素e為Q的新的隊(duì)尾元素 </p><p>  Status DeQueue(LinkQueue Q,QElemType &e)</p><p>  //若隊(duì)列不空,則刪除Q的隊(duì)頭元素,用e返

41、回其值,并返回OK;</p><p>  //否則返回ERROR</p><p>  Status QueueTraverse(LinkQueue Q,visit())</p><p>  //從隊(duì)頭到隊(duì)尾依次對(duì)隊(duì)列Q中每個(gè)元素調(diào)用函數(shù)visit(),一旦visit失敗,則操作失敗。</p><p>  其中部分操作的算法:</p>

42、;<p>  void InitQueue(Shortcut &S)</p><p><b>  {//初始化便道</b></p><p>  S.front=S.rear=(CarPtr)malloc(sizeof(Car2));</p><p>  S.front->next=NULL;</p>&

43、lt;p>  S.length=0;</p><p><b>  }</b></p><p>  void EnQueue(Shortcut &S,int number,int ar_time)</p><p><b>  {//車進(jìn)入便道</b></p><p><b> 

44、 CarPtr p;</b></p><p>  p=(CarPtr)malloc(sizeof(Car2));</p><p>  p->number=number;</p><p>  p->ar_time=ar_time;</p><p>  p->next=NULL;</p><p&g

45、t;  S.rear->next=p; //相連</p><p><b>  S.rear=p;</b></p><p>  ++S.length;</p><p><b>  }</b></p><p>  void DeQueue(Shortcut &S,CarPtr &w

46、)</p><p><b>  {//車離開便道</b></p><p>  if(S.length!=0)</p><p><b>  {</b></p><p>  w = S.front->next;</p><p>  S.front->next=S.fr

47、ont->next->next;</p><p>  --S.length;</p><p><b>  }</b></p><p><b>  }</b></p><p>  4、停車場(chǎng)、便道的類型</p><p>  其中部分操作的算法:</p>

48、<p>  void Arrival(Park &P,Shortcut &S,int n)</p><p>  {//對(duì)進(jìn)站車輛的處理</p><p>  int number,ar_time;</p><p>  printf("請(qǐng)輸入車牌號(hào):");</p><p>  scanf("

49、;%d",&number);</p><p>  printf("進(jìn)場(chǎng)的時(shí)刻:");</p><p>  scanf("%d",&ar_time);</p><p>  if(P.stacksize<n)</p><p><b>  {</b><

50、;/p><p>  CarNode c;</p><p>  c.number=number;</p><p>  c.ar_time=ar_time;</p><p>  Push(P,c);</p><p>  printf("該車應(yīng)停在第%d號(hào)車道。\n",P.stacksize);</p&

51、gt;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  EnQueue(S,number,ar_time);</p><p>  printf("停車場(chǎng)已滿,請(qǐng)暫時(shí)停

52、在便道的第%d個(gè)位置。\n",S.length);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Leave(Park &P,Park &P1,Shortcut &S,int cost)</p><p>

53、;  {//對(duì)離站車輛的處理</p><p>  int number,le_time,flag,money;</p><p>  CarPtr c,q;</p><p>  int times;</p><p>  printf("請(qǐng)輸入車牌號(hào):");</p><p>  scanf("

54、%d",&number);</p><p>  printf("出場(chǎng)的時(shí)刻:");</p><p>  scanf("%d",&le_time);</p><p>  CarNode e,m;</p><p><b>  CarPtr w;</b><

55、/p><p>  while(P.stacksize)</p><p><b>  {</b></p><p><b>  Pop(P,e);</b></p><p>  if(e.number==number)</p><p><b>  {</b><

56、;/p><p><b>  flag=0;</b></p><p>  money=(le_time-e.ar_time)*cost;</p><p>  times = le_time-e.ar_time;</p><p><b>  break;</b></p><p>&l

57、t;b>  }</b></p><p>  Push(P1,e);</p><p><b>  }</b></p><p>  while(P1.stacksize)</p><p><b>  {</b></p><p>  Pop(P1,e);</

58、p><p>  Push(P,e);</p><p><b>  }</b></p><p>  // 車從停車場(chǎng)中出</p><p>  if (flag == 0)</p><p><b>  {</b></p><p>  if(S.length!=

59、0)</p><p><b>  {</b></p><p>  DeQueue(S,w);</p><p>  m.ar_time=le_time;</p><p>  m.number=w->number;</p><p>  Push(P,m);</p><p>

60、;<b>  free(w);</b></p><p>  printf("車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)\n",m.number);</p><p><b>  }</b></p><p>  printf("停車費(fèi)為%d, 停車時(shí)間為%d\n",money,times);&l

61、t;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("停車場(chǎng)不存在牌號(hào)為%d的車,在便道上找\n", number);</p><p

62、>  c = S.front;</p><p>  if(S.length!=0)</p><p><b>  {</b></p><p>  while(c->next!= NULL)</p><p><b>  {</b></p><p>  if(c->

63、;next->number == number)</p><p><b>  {</b></p><p>  printf("%d車 從便道上離開,停留時(shí)間 %d\n",c->next->number,le_time -c->next->ar_time);</p><p>  c->ne

64、xt = c->next->next;</p><p>  --S.length;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  c = c->next;</p><p>  DeQueue(S

65、,q) ;</p><p>  S.rear->next=q;</p><p><b>  S.rear=q;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

66、/b></p><p><b>  }</b></p><p><b>  五、主函數(shù)的算法:</b></p><p>  void main()</p><p><b>  {</b></p><p>  int n,cost;</p>

67、;<p>  char flag;//選項(xiàng)</p><p><b>  Park P,Q;</b></p><p>  printf("輸入停車場(chǎng)的規(guī)模:");</p><p>  scanf("%d",&n);</p><p>  printf("

68、每小時(shí)收費(fèi):");</p><p>  scanf("%d",&cost);</p><p>  Shortcut S;</p><p>  InitStack(P,n); //初始化</p><p>  InitStack(Q,n);</p><p>  InitQueue(S)

69、;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  cout<<"請(qǐng)選擇(A,D,E):\n";</p><p>  cin>>flag;</p><p>  swi

70、tch(flag)</p><p><b>  {</b></p><p><b>  case 'A':</b></p><p><b>  case 'a':</b></p><p>  Arrival(P,S,n);break; //車進(jìn)入

71、停車場(chǎng)</p><p><b>  case 'D':</b></p><p><b>  case 'd':</b></p><p>  Leave(P,Q,S,cost);break; //車離開停車場(chǎng)</p><p><b>  case 'E

72、':</b></p><p><b>  case 'e':</b></p><p><b>  return 0;</b></p><p><b>  break;</b></p><p><b>  default:</b

73、></p><p>  printf("Input error!\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

74、;b>  }</b></p><p>  六、函數(shù)的調(diào)用關(guān)系圖反映了演示程序的層次結(jié)構(gòu):</p><p><b>  四、調(diào)試分析</b></p><p>  1、由于剛開始對(duì)隊(duì)列元素刪除的不了解,使得程序的操作直接對(duì)隊(duì)列中的元素刪除,而不是刪除對(duì)頭元素,這違背了題目要求。經(jīng)過(guò)修改后,這一問(wèn)題得到解決。</p>

75、<p>  2、棧的元素中step域沒(méi)有太多用處,可以省略。</p><p>  3、Stack Travers在調(diào)試過(guò)程中很有用,它可以插入在算法中多處,以察看停車場(chǎng)管理中車輛走動(dòng)的次序是否正確,但對(duì)最后的執(zhí)行版本么有用。</p><p><b>  五、用戶手冊(cè)</b></p><p>  1、本程序的運(yùn)行環(huán)境為Windows,執(zhí)

76、行文件為:停車場(chǎng)管理.exe</p><p>  2、進(jìn)入演示程序后,即顯示文本方式的用戶界面:</p><p>  3、進(jìn)入車輛輸入信息的命令后,程序開始運(yùn)行。</p><p>  4、按回車后程序輸出相應(yīng)的結(jié)果。</p><p><b>  六、測(cè)試結(jié)果</b></p><p><b&g

77、t;  七、附錄</b></p><p>  #include<stdio.h></p><p>  #include<malloc.h></p><p>  #include<iostream.h></p><p><b>  //棧,模擬停車場(chǎng)</b></p>

78、;<p>  typedef struct Car1{//車</p><p>  int number;//汽車車號(hào)</p><p>  int ar_time;//汽車到達(dá)時(shí)間</p><p><b>  }CarNode;</b></p><p>  typedef struct{//停車場(chǎng)</p

79、><p>  CarNode *base;//停車場(chǎng)的堆棧底</p><p>  CarNode *top;//停車場(chǎng)的堆棧頂</p><p>  int stacksize;</p><p><b>  }Park;</b></p><p><b>  //隊(duì)列,模擬便道</b>

80、;</p><p>  typedef struct Car2</p><p><b>  {//車</b></p><p>  int number;//汽車車號(hào)</p><p>  int ar_time;//汽車到達(dá)時(shí)間</p><p>  struct Car2 *next;</p&

81、gt;<p><b>  }*CarPtr;</b></p><p>  typedef struct</p><p><b>  {//便道</b></p><p>  CarPtr front;//便道的隊(duì)列的對(duì)頭</p><p>  CarPtr rear;//便道的隊(duì)列的隊(duì)尾&

82、lt;/p><p>  int length;</p><p>  }Shortcut;</p><p>  void InitStack(Park &P,int n)</p><p><b>  {//初始化停車場(chǎng)</b></p><p>  P.top=P.base=(CarNode*)m

83、alloc(n*sizeof(Car1));</p><p>  P.stacksize=0;</p><p><b>  }</b></p><p>  void Push(Park &P,CarNode e)</p><p><b>  {//車進(jìn)入停車場(chǎng)</b></p>

84、<p><b>  *P.top=e;</b></p><p><b>  P.top++;</b></p><p>  ++P.stacksize;</p><p><b>  }</b></p><p>  void Pop(Park &P,CarNode

85、 &e)</p><p><b>  {//車離開停車場(chǎng)</b></p><p><b>  --P.top;</b></p><p><b>  e=*P.top;</b></p><p>  --P.stacksize;</p><p>&l

86、t;b>  }</b></p><p>  void InitQueue(Shortcut &S)</p><p><b>  {//初始化便道</b></p><p>  S.front=S.rear=(CarPtr)malloc(sizeof(Car2));</p><p>  S.fron

87、t->next=NULL;</p><p>  S.length=0;</p><p><b>  }</b></p><p>  void EnQueue(Shortcut &S,int number,int ar_time)</p><p><b>  {//車進(jìn)入便道</b>&l

88、t;/p><p><b>  CarPtr p;</b></p><p>  p=(CarPtr)malloc(sizeof(Car2));</p><p>  p->number=number;</p><p>  p->ar_time=ar_time;</p><p>  p->

89、next=NULL;</p><p>  S.rear->next=p; //相連</p><p><b>  S.rear=p;</b></p><p>  ++S.length;</p><p><b>  }</b></p><p>  void DeQueue(

90、Shortcut &S,CarPtr &w)</p><p><b>  {//車離開便道</b></p><p>  if(S.length!=0)</p><p><b>  {</b></p><p>  w = S.front->next;</p><

91、;p>  S.front->next=S.front->next->next;</p><p>  --S.length;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Arrival(Park &P,S

92、hortcut &S,int n)</p><p>  {//對(duì)進(jìn)站車輛的處理</p><p>  int number,ar_time;</p><p>  printf("請(qǐng)輸入車牌號(hào):");</p><p>  scanf("%d",&number);</p><

93、;p>  printf("進(jìn)場(chǎng)的時(shí)刻:");</p><p>  scanf("%d",&ar_time);</p><p>  if(P.stacksize<n)</p><p><b>  {</b></p><p>  CarNode c;</p&g

94、t;<p>  c.number=number;</p><p>  c.ar_time=ar_time;</p><p>  Push(P,c);</p><p>  printf("該車應(yīng)停在第%d號(hào)車道。\n",P.stacksize);</p><p><b>  }</b>&l

95、t;/p><p><b>  else</b></p><p><b>  {</b></p><p>  EnQueue(S,number,ar_time);</p><p>  printf("停車場(chǎng)已滿,請(qǐng)暫時(shí)停在便道的第%d個(gè)位置。\n",S.length);</p&g

96、t;<p><b>  }</b></p><p><b>  }</b></p><p>  void Leave(Park &P,Park &P1,Shortcut &S,int cost)</p><p>  {//對(duì)離站車輛的處理</p><p>  i

97、nt number,le_time,flag,money;</p><p>  CarPtr c,q;</p><p>  int times;</p><p>  printf("請(qǐng)輸入車牌號(hào):");</p><p>  scanf("%d",&number);</p><

98、p>  printf("出場(chǎng)的時(shí)刻:");</p><p>  scanf("%d",&le_time);</p><p>  CarNode e,m;</p><p><b>  CarPtr w;</b></p><p>  while(P.stacksize)&

99、lt;/p><p><b>  {</b></p><p><b>  Pop(P,e);</b></p><p>  if(e.number==number)</p><p><b>  {</b></p><p><b>  flag=0;&l

100、t;/b></p><p>  money=(le_time-e.ar_time)*cost;</p><p>  times = le_time-e.ar_time;</p><p><b>  break;</b></p><p><b>  }</b></p><p&

101、gt;  Push(P1,e);</p><p><b>  }</b></p><p>  while(P1.stacksize)</p><p><b>  {</b></p><p>  Pop(P1,e);</p><p>  Push(P,e);</p>

102、<p><b>  }</b></p><p>  printf("停車費(fèi)為%d, 停車時(shí)間為%d\n",money,times);</p><p>  // 車從停車場(chǎng)中出</p><p>  While(S.stacksize)</p><p><b>  {</b&

103、gt;</p><p>  DeQueue(S,w);</p><p>  m.ar_time=le_time;</p><p>  m.number=w->number;</p><p>  Push(P,m);</p><p><b>  free(w);</b></p>

104、<p>  printf("車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)\n",m.number);</p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("停車場(chǎng)不存在牌號(hào)為%d的車,在便道上找\n", number

105、);</p><p><b>  {</b></p><p>  c = S.front;</p><p>  if(S.length!=0)</p><p><b>  {</b></p><p>  while(c->next!= NULL)</p>

106、<p><b>  {</b></p><p>  if(c->next->number == number)</p><p><b>  {</b></p><p>  printf("%d車 從便道上離開,停留時(shí)間 %d\n",c->next->number,le

107、_time -c->next->ar_time);</p><p>  c->next = c->next->next;</p><p>  --S.length;</p><p>  c = c->next;</p><p><b>  break;</b></p>&

108、lt;p><b>  }</b></p><p><b>  else</b></p><p>  DeQueue(S,c) ;</p><p><b>  }</b></p><p><b>  }</b></p><p>

109、<b>  }</b></p><p><b>  }</b></p><p><b>  //主函數(shù)</b></p><p>  void main()</p><p><b>  {</b></p><p>  int n,co

110、st;</p><p>  char flag;//選項(xiàng)</p><p><b>  Park P,Q;</b></p><p>  printf("輸入停車場(chǎng)的規(guī)模:");</p><p>  scanf("%d",&n);</p><p>  p

111、rintf("每小時(shí)收費(fèi):");</p><p>  scanf("%d",&cost);</p><p>  Shortcut S;</p><p>  InitStack(P,n); //初始化</p><p>  InitStack(Q,n);</p><p>  

112、InitQueue(S);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  cout<<"請(qǐng)選擇(A,D,E):\n";</p><p>  cin>>flag;</p>&l

113、t;p>  switch(flag)</p><p><b>  {</b></p><p><b>  case 'A':</b></p><p><b>  case 'a':</b></p><p>  Arrival(P,S,n);

114、break; //車進(jìn)入停車場(chǎng)</p><p><b>  case 'D':</b></p><p><b>  case 'd':</b></p><p>  Leave(P,Q,S,cost);break; //車離開停車場(chǎng)</p><p><b> 

115、 case 'E':</b></p><p><b>  case 'e':</b></p><p><b>  return 0;</b></p><p><b>  break;</b></p><p><b>  de

116、fault:</b></p><p>  printf("Input error!\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p>

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論