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

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計(jì) 報(bào) 告</p><p>  課程名稱 數(shù)據(jù) 結(jié)構(gòu) </p><p>  題 目 停車場管理 </p><p>  學(xué)生姓名 </p><p>  班級/學(xué)號 &l

2、t;/p><p><b>  需求分析</b></p><p>  設(shè)停車場是一個可停放n輛汽車的狹長通道,且只有一個大門可供</p><p>  汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)時間的先后順序,依次由北向南排列(大門在最南端),若停車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場內(nèi)

3、某輛車要離開時,在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進(jìn)入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費(fèi)用。試為停車場編制按上述要求進(jìn)行管理的模擬程序。</p><p><b>  【測試數(shù)據(jù)】</b></p><p>  設(shè)n=2,輸入數(shù)據(jù)為:(’A’,1,5),(’A’,2,10),(’D’,1,15

4、),(’A’,3,20),(’A’,4,25),(’A’,5,30),(’D’,2,35),(’D’,4,40),(’E’,0,0)。其中:’A’表示到達(dá);’D’表示離去;’E’表示輸入結(jié)束。</p><p><b>  概要設(shè)計(jì)</b></p><p>  以棧模擬停車場,以隊(duì)列模擬車場外的便道。棧以順序結(jié)構(gòu)實(shí)現(xiàn)。隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。每一組輸入數(shù)據(jù)包括:汽車“到達(dá)”

5、或“離去”信息、汽車牌照號碼以及到達(dá)或離去的時刻。</p><p>  輸出信息:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時間和應(yīng)交納的費(fèi)用(在便道上停留的時間不收費(fèi))。 </p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p><b>  程序設(shè)計(jì)</b&g

6、t;</p><p><b>  1.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p>  /*棧,模擬停車場*/</p><p>  typedef struct Car1</p><p>  { //車</p><p>  int number;//汽車車號</p>

7、<p>  int ar_time;//汽車到達(dá)時間</p><p><b>  }CarNode;</b></p><p>  typedef struct</p><p>  { //停車場</p><p>  CarNode *base;//停車場的堆棧底</p&g

8、t;<p>  CarNode *top;//停車場的堆棧頂</p><p>  int stacksize;</p><p><b>  }Park;</b></p><p>  /*隊(duì)列,模擬便道*/</p><p>  typedef struct Car2</p><p> 

9、 { //車</p><p>  int number;//汽車車號</p><p>  int ar_time;//汽車到達(dá)時間</p><p>  struct Car2 *next;</p><p><b>  }*CarPtr;</b></p><p>  typ

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

11、gt;<p><b>  2.程序設(shè)計(jì)</b></p><p>  主函數(shù)中包括3個子函數(shù),A(arrive),D(depart),E(end)</p><p> ?。?)輸入車輛數(shù)據(jù):A為到達(dá),D為離去,E為結(jié)束程序。</p><p> ?。?)接著輸入車輛的牌照信息(3)若為到達(dá)的車輛,輸入進(jìn)場信息,若為離去的車輛,輸入離場

12、信息。</p><p> ?。?)若車輛到達(dá),可得到車輛的停放位置信息,若車輛離去,可得到車輛的停放時間(在便道上的停放時間除外),以及應(yīng)該交納的費(fèi)用。</p><p> ?。?)本程序不斷循環(huán)要求輸入車輛信息,直到輸入的車輛數(shù)據(jù)為E時,程序結(jié)束。</p><p><b>  調(diào)試分析</b></p><p>  一開始

13、在調(diào)試程序時遇到了內(nèi)存錯誤,經(jīng)過DEBUG,找到了引起內(nèi)存錯誤的原因:即在建立隊(duì)頭指針與隊(duì)尾指針時沒有對指針進(jìn)行初始化(沒有為指針動態(tài)分配空間)。問題得到解決。</p><p>  本程序中:車輛到達(dá),離去時的時間復(fù)雜度均為:O(n)。本程序空間復(fù)雜度為:O(n)</p><p><b>  使用說明和測試結(jié)果</b></p><p>  1.

14、使用說明:用戶按照屏幕所顯示的提示來選擇需要進(jìn)行操作</p><p><b>  2、測試結(jié)果:</b></p><p>  測試結(jié)果滿足題目要求,程序無錯誤。</p><p><b>  心得體會</b></p><p>  通過此實(shí)驗(yàn),加深了我對數(shù)據(jù)結(jié)構(gòu)這門課的理解,真正運(yùn)用了知識。將理論與現(xiàn)實(shí)

15、完美的聯(lián)系在了一起。增強(qiáng)了動手能力,對今后的工作學(xué)習(xí)都有很大的幫助。單調(diào)的看書本沒有太大的作用,只有去編程才能理解究竟學(xué)習(xí)的作用。同時,編程過程中遇到過各種各樣的問題,與同學(xué)討論,與老師交流。鍛煉了我的協(xié)做能力與克服困難的能力。編程也極大的提高了我的學(xué)習(xí)積極性。</p><p><b>  附錄</b></p><p>  #include<stdio.h>

16、;</p><p>  #include<stdlib.h></p><p>  #include<malloc.h></p><p>  #define SIZE 2//停車場位置數(shù),共5個車位</p><p>  typedef int Status;</p><p>  /*棧,模擬停車場

17、*/</p><p>  typedef struct Car1</p><p>  { //車</p><p>  int number;//汽車車號</p><p>  int ar_time;//汽車到達(dá)時間</p><p><b>  }CarNode;</b>&

18、lt;/p><p>  typedef struct</p><p>  { //停車場</p><p>  CarNode *base;//停車場的堆棧底</p><p>  CarNode *top;//停車場的堆棧頂</p><p>  int stacksize;</p>

19、<p><b>  }Park;</b></p><p>  /*隊(duì)列,模擬便道*/</p><p>  typedef struct Car2</p><p>  { //車</p><p>  int number;//汽車車號</p><p>  in

20、t ar_time;//汽車到達(dá)時間</p><p>  struct Car2 *next;</p><p><b>  }*CarPtr;</b></p><p>  typedef struct</p><p>  { //便道</p><p>  CarPtr

21、 front;//便道的隊(duì)列的對頭</p><p>  CarPtr rear;//便道的隊(duì)列的隊(duì)尾</p><p>  int length;</p><p>  }Shortcut;</p><p>  /*初始化停車場*/</p><p>  Status InitStack(Park &P){</

22、p><p>  P.base=(CarNode*)malloc(SIZE*sizeof(Car1));</p><p>  if(!P.base) exit(-2);</p><p>  P.top=P.base;</p><p>  P.stacksize=0;</p><p><b>  return 1;&

23、lt;/b></p><p><b>  }</b></p><p>  Status Push(Park &P,CarNode e){//車進(jìn)入停車場</p><p>  *P.top++=e;</p><p>  ++P.stacksize;</p><p><b> 

24、 return 1;</b></p><p><b>  }</b></p><p>  Status Pop(Park &P,CarNode &e){//車離開停車場</p><p>  if(P.top==P.base)</p><p>  printf("停車場為空"

25、);</p><p><b>  else</b></p><p><b>  {</b></p><p>  e=*--P.top;</p><p>  --P.stacksize;</p><p><b>  }</b></p><

26、;p><b>  return 1;</b></p><p><b>  }</b></p><p><b>  /*初始化便道*/</b></p><p>  Status InitQueue(Shortcut &S){</p><p>  S.front=S.

27、rear=(CarPtr)malloc(sizeof(Car2));</p><p>  if(!S.front||!S.rear) exit(-2);</p><p>  S.front->next=NULL;</p><p>  S.length=0;</p><p><b>  return 1;</b>&l

28、t;/p><p><b>  }</b></p><p>  Status EnQueue(Shortcut &S,int number,int ar_time){//車進(jìn)入便道</p><p><b>  CarPtr p;</b></p><p>  p=(CarPtr)malloc(siz

29、eof(Car2));</p><p>  if(!p) exit(-2);</p><p>  p->number=number;</p><p>  p->ar_time=ar_time;</p><p>  p->next=NULL;</p><p>  S.rear->next=p;&l

30、t;/p><p><b>  S.rear=p;</b></p><p>  ++S.length;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  Status DeQueue(Short

31、cut &S,CarPtr &w){//車離開便道</p><p>  if(S.length == 0)</p><p>  printf("通道為空");</p><p><b>  else</b></p><p><b>  {</b></p>

32、<p>  w = S.front->next;</p><p>  S.front->next=S.front->next->next;</p><p>  --S.length;</p><p><b>  }</b></p><p><b>  return 1;&l

33、t;/b></p><p><b>  }</b></p><p>  Status Arrival(Park &P,Shortcut &S){//對進(jìn)站車輛的處理</p><p>  int number,ar_time;</p><p>  printf("請輸入車牌號:")

34、;</p><p>  scanf("%d",&number);</p><p>  printf("進(jìn)場的時刻:");</p><p>  scanf("%d",&ar_time);</p><p>  if(P.stacksize<SIZE)</p&g

35、t;<p><b>  {</b></p><p>  CarNode c;</p><p>  c.number=number;</p><p>  c.ar_time=ar_time;</p><p>  Push(P,c);</p><p>  printf("請將車

36、停在第%d號車道。\n",P.stacksize);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  EnQueue(S,number,ar_time);</p&g

37、t;<p>  printf("停車場已滿,請暫時停在便道的第%d個位置。\n",S.length);</p><p><b>  }</b></p><p><b>  return 1;</b></p><p><b>  }</b></p><

38、;p>  Status Leave(Park &P,Park &P1,Shortcut &S){//對離站車輛的處理</p><p>  int number,le_time,flag=1,money,ar_time;</p><p>  printf("請輸入車牌號:");</p><p>  scanf(&quo

39、t;%d",&number);</p><p>  printf("出場的時刻:");</p><p>  scanf("%d",&le_time);</p><p>  CarNode e,m;</p><p><b>  CarPtr w;</b>&l

40、t;/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>&

41、lt;/p><p><b>  flag=0;</b></p><p>  money=(le_time-e.ar_time)*2;</p><p>  ar_time=e.ar_time;</p><p><b>  break;</b></p><p><b>  

42、}</b></p><p>  Push(P1,e);</p><p><b>  }</b></p><p>  while(P1.stacksize)</p><p><b>  {</b></p><p>  Pop(P1,e);</p>&l

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

44、gt;<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><b>

45、;  free(w);</b></p><p>  printf("車牌號為%d的車已由便道進(jìn)入停車場\n",m.number);</p><p><b>  }</b></p><p>  printf("停車費(fèi)為%d, 占用車位數(shù)為%d\n",money,P.stacksize);<

46、/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("停車場不存在牌號為%d的車\n", number);</p><p><

47、b>  }</b></p><p><b>  return 1;</b></p><p><b>  }</b></p><p><b>  /*主函數(shù)*/</b></p><p>  int main()</p><p><b

48、>  {</b></p><p><b>  int m=1;</b></p><p>  char flag;//選項(xiàng)</p><p><b>  Park P,Q;</b></p><p>  Shortcut S;</p><p>  InitStac

49、k(P);</p><p>  InitStack(Q);</p><p>  InitQueue(S);</p><p><b>  while(m)</b></p><p><b>  {</b></p><p>  printf("\n

50、 停車場管理程序 \n");</p><p>  printf("A 汽車進(jìn)車場 D 汽車出車場 E 退出程序\n");</p><p>  printf("請選擇(A,D,E): ");</p><p>  scanf("%c",&

51、;flag);</p><p>  switch(flag)</p><p><b>  {</b></p><p><b>  case 'A':</b></p><p><b>  case 'a':</b></p><p

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

53、><b>  case 'E':</b></p><p><b>  case 'e':</b></p><p><b>  m=0;</b></p><p><b>  break;</b></p><p><

54、b>  default:</b></p><p>  printf("Input error!\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  while (flag != '\n&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論