一元高次多項(xiàng)式和交通咨詢系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩68頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告</p><p>  報(bào)告(論文)題目:交通系統(tǒng)系統(tǒng)設(shè)計(jì)及一元 </p><p>  高次多項(xiàng)式的加減乘運(yùn)算 </p><p>  作者所在系部: 計(jì)算機(jī)系 </p><p>  作者所在專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>

2、;<b>  目 錄</b></p><p>  第1章 問題描述4</p><p><b>  1.1題目內(nèi)容4</b></p><p>  1.1.1交通咨詢系統(tǒng)設(shè)計(jì)4</p><p>  1.1.2一元高次多項(xiàng)式的加、減、乘運(yùn)算4</p><p><b&

3、gt;  1.2基本要求5</b></p><p>  1.2.1交通咨詢系統(tǒng)設(shè)計(jì)5</p><p>  1.2.2一元高次多項(xiàng)式的加、減、乘運(yùn)算5</p><p>  1.3 測試數(shù)據(jù)5</p><p>  1.3.1交通咨詢系統(tǒng)設(shè)計(jì)5</p><p>  1.3.2一元高次多項(xiàng)式的加、減、乘運(yùn)

4、算5</p><p>  第2章 需求分析6</p><p><b>  2.1功能說明6</b></p><p>  2.1.1交通咨詢系統(tǒng)設(shè)計(jì)6</p><p>  2.1.2一元高次多項(xiàng)式的加、減、乘運(yùn)算6</p><p><b>  2.2輸入說明6</b>

5、;</p><p>  2.2.1交通咨詢系統(tǒng)設(shè)計(jì)6</p><p>  2.2.2一元高次多項(xiàng)式的加、減、乘運(yùn)算6</p><p><b>  2.3輸出說明6</b></p><p>  2.3.1交通咨詢系統(tǒng)設(shè)計(jì)6</p><p>  2.3.2一元高次多項(xiàng)式的加、減、乘運(yùn)算7&l

6、t;/p><p><b>  2.4測試數(shù)據(jù)7</b></p><p>  2.4.1交通咨詢系統(tǒng)設(shè)計(jì)7</p><p>  2.4.2一元高次多項(xiàng)式的加、減、乘運(yùn)算7</p><p>  第3章 概要設(shè)計(jì)8</p><p>  3.1抽象數(shù)據(jù)類型定義8</p><p&g

7、t;  3.1.1交通咨詢系統(tǒng)設(shè)計(jì)8</p><p>  3.1.2一元高次多項(xiàng)式的加、減、乘運(yùn)算9</p><p>  3.2程序模塊結(jié)構(gòu)9</p><p>  3.2.1交通咨詢系統(tǒng)設(shè)計(jì)9</p><p>  3.2.2一元高次多項(xiàng)式的加、減、乘運(yùn)算10</p><p>  第4章 詳細(xì)設(shè)計(jì)11<

8、/p><p>  4.1定義的數(shù)據(jù)類型11</p><p>  4.1.1交通咨詢系統(tǒng)設(shè)計(jì)11</p><p>  1.元素類型、結(jié)點(diǎn)類型和指針類型11</p><p>  4.1.2一元高次多項(xiàng)式的加、減、乘運(yùn)算20</p><p>  1.元素類型、結(jié)點(diǎn)類型和指針類型20</p><p&g

9、t;  4.2函數(shù)間的調(diào)用關(guān)系23</p><p>  4.2.1交通咨詢系統(tǒng)設(shè)計(jì)23</p><p>  4.2.2一元高次多項(xiàng)式的加、減、乘運(yùn)算24</p><p>  第5章 調(diào)試分析25</p><p>  5.1調(diào)試過程分析25</p><p>  5.1.1交通咨詢系統(tǒng)設(shè)計(jì)25</p>

10、;<p>  5.1.2一元高次多項(xiàng)式的加、減、乘運(yùn)算25</p><p>  5.2算法的時(shí)空分析25</p><p>  5.2.1交通咨詢系統(tǒng)設(shè)計(jì)25</p><p>  5.2.2一元高次多項(xiàng)式的加、減、乘運(yùn)算25</p><p>  第6章 使用說明26</p><p>  6.1交通

11、咨詢系統(tǒng)設(shè)計(jì)26</p><p>  6.2一元高次多項(xiàng)式的加、減、乘運(yùn)算26</p><p>  第7章 測試結(jié)果27</p><p>  7.1交通咨詢系統(tǒng)設(shè)計(jì)27</p><p>  7.2一元高次多項(xiàng)式的加、減、乘運(yùn)算29</p><p><b>  參考文獻(xiàn)33</b><

12、;/p><p><b>  附 錄34</b></p><p><b>  第1章 問題描述</b></p><p><b>  1.1 題目內(nèi)容</b></p><p>  1.1.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  設(shè)計(jì)一個(gè)交通咨詢系統(tǒng),能讓旅

13、客咨詢從任一城市頂點(diǎn)到另一城市頂點(diǎn)之間的最短路徑(里程)或最低花費(fèi)或最少時(shí)間等問題。對(duì)于不同咨詢要求,可輸入城市間的路程或所需時(shí)間或所需費(fèi)用。</p><p>  1.1.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  用鏈表表示一元高次多項(xiàng)式,實(shí)現(xiàn)兩個(gè)多項(xiàng)式的加、減、乘運(yùn)算。</p><p><b>  1.2 基本要求</b><

14、;/p><p>  1.2.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  1.創(chuàng)建圖的存儲(chǔ)結(jié)構(gòu)使用鄰接矩陣。</p><p>  2.查詢分為兩類。一類是能讓旅客咨詢從一個(gè)城市到另外所有城市的最短路徑(要求使用迪杰斯特拉算法),顯示出所有路徑,按升序排列。第二類是任意兩個(gè)城市間的最短路徑(要求使用弗洛伊德算法),顯示最短路徑。</p><p>  3

15、.按給定交通地圖完成以上功能。</p><p>  1.2.2一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  1.描述多項(xiàng)式時(shí),將每個(gè)子項(xiàng)看成是由系數(shù)和指數(shù)兩部分組成。</p><p>  2.輸入并創(chuàng)建一元多項(xiàng)式,以鏈表作為存儲(chǔ)結(jié)構(gòu)。</p><p>  3.實(shí)現(xiàn)兩個(gè)多項(xiàng)式的相加、相減和相乘運(yùn)算。</p><p>

16、;  4.顯示多項(xiàng)式,查看運(yùn)算結(jié)果。</p><p>  5.用戶界面包括以下功能:創(chuàng)建 加法 減法 乘法 顯示 退出</p><p><b>  1.3 測試數(shù)據(jù)</b></p><p>  1.3.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  任意輸入所需要查找的一個(gè)或兩個(gè)城市,然后查找最短距離、最少花費(fèi)和最短時(shí)間。&

17、lt;/p><p>  1.3.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  2X^4+3X^4=5X^4</p><p>  6X^3+3X^5=6X^3+3X^5</p><p>  7X^9*4X^5=28X^45</p><p><b>  第2章 需求分析</b></p>

18、;<p><b>  2.1 功能說明</b></p><p>  2.1.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  查詢分為兩類。一類是能讓旅客咨詢從一個(gè)城市到另外所有城市的最短路徑,顯示出所有路徑,按升序排列。第二類是任意兩個(gè)城市間的最短路徑,顯示最短路徑。</p><p>  2.1.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算<

19、;/p><p>  描述多項(xiàng)式時(shí),將每個(gè)子項(xiàng)看成是由系數(shù)和指數(shù)兩部分組成。</p><p>  輸入并創(chuàng)建一元多項(xiàng)式,以鏈表作為存儲(chǔ)結(jié)構(gòu)。</p><p>  實(shí)現(xiàn)兩個(gè)多項(xiàng)式的相加、相減和相乘運(yùn)算。</p><p>  顯示多項(xiàng)式,查看運(yùn)算結(jié)果。</p><p><b>  2.2 輸入說明</b>&

20、lt;/p><p>  2.2.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  用戶根據(jù)自己所需要的利用交通系統(tǒng)查詢的功能自己進(jìn)行查詢。</p><p>  2.2.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  程序運(yùn)行后顯現(xiàn)提示信息,由用戶輸入兩個(gè)多項(xiàng)式,由用戶自行選擇加減乘功能進(jìn)行運(yùn)算。</p><p><b

21、>  2.3 輸出說明</b></p><p>  2.3.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  根據(jù)用戶不同的選擇功能輸出不同。</p><p>  2.3.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  用戶輸入數(shù)據(jù)完畢,程序?qū)⑤敵鲞\(yùn)算結(jié)果。</p><p><b>  2.

22、4 測試數(shù)據(jù)</b></p><p>  2.4.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  用戶自行選擇功能,可進(jìn)行按序號(hào)查找和按名稱查找。</p><p>  2.4.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  測試數(shù)據(jù)應(yīng)為兩組整數(shù),正負(fù)都沒有關(guān)系。</p><p><b>  第3

23、章 概要設(shè)計(jì)</b></p><p>  3.1 抽象數(shù)據(jù)類型定義</p><p>  3.1.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  為實(shí)現(xiàn)上程序功能,應(yīng)創(chuàng)建圖的存儲(chǔ)結(jié)構(gòu)并使用鄰接矩陣表示集合。</p><p><b>  1.建圖的存儲(chǔ)結(jié)構(gòu)</b></p><p>  typed

24、ef struct</p><p><b>  {</b></p><p>  int vexs[max]; </p><p>  string name[max]; </p><p>  int cost[max][max];</p><p>  int distance[max][max];&

25、lt;/p><p>  int time[max][max]; </p><p>  int vnm,enm; </p><p>  }mgraph; </p><p><b>  2.鄰接矩陣</b></p><p>  void create(mgraph &g,int n,i

26、nt e) </p><p><b>  {</b></p><p><b>  int i,j; </b></p><p>  g.vnm=n; </p><p>  g.enm=e; </p><p>  for(i=1;i<=g.vnm;i++)<

27、;/p><p>  g.vexs[i]=i; </p><p>  //對(duì)應(yīng)數(shù)組下標(biāo)即為城市代號(hào)</p><p>  for(i=1;i<=g.vnm;i++) </p><p><b>  {//初始化</b></p><p>  for(j=1;j<=g.v

28、nm;j++) </p><p><b>  { </b></p><p><b>  if(i==j) </b></p><p><b>  { </b></p><p>  g.distance[i][j]=0; </p><p>  

29、g.cost[i][j]=0; </p><p>  g.time[i][j]=0; </p><p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  g.dis

30、tance[i][j]=MAX; </p><p>  g.cost[i][j]=MAX;</p><p>  g.time[i][j]=MAX; </p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }&l

31、t;/b></p><p>  3.1.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  鏈表和數(shù)組的使用,下面是鏈表的定義:</p><p>  typedef struct{</p><p>  double xishu;</p><p>  double zhishu;</p><

32、p>  }LNode,*LinkList;</p><p><b>  數(shù)組的定義:</b></p><p>  LNode a[2],b[3];</p><p>  3.2 程序模塊結(jié)構(gòu)</p><p>  3.2.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  本程序包含主程序、最少花費(fèi)、最短

33、距離、最少時(shí)間模塊和迪杰斯特拉算法、弗洛伊德算法模塊等三個(gè)模塊。</p><p>  最少花費(fèi)、最短距離、最少時(shí)間模塊實(shí)現(xiàn)判斷兩城市之間信息。</p><p>  迪杰斯特拉算法、弗洛伊德算法模塊實(shí)現(xiàn)兩城市之間的各種信息的具體計(jì)算。</p><p>  三個(gè)模塊間的調(diào)用關(guān)系如圖3-1所示。</p><p>  圖3-1 模塊間的調(diào)用關(guān)系圖&l

34、t;/p><p>  3.2.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  本程序包含主程序、加減乘運(yùn)算函數(shù)模塊顯示模塊三個(gè)模塊。</p><p>  加減乘模塊是用來計(jì)算一元高次多項(xiàng)式的加減乘的核心模塊。</p><p>  顯示模塊是用來顯示計(jì)算結(jié)果的模塊。</p><p>  三個(gè)模塊間的調(diào)用關(guān)系如圖3-2

35、所示。</p><p>  圖3-2 模塊間的調(diào)用關(guān)系圖</p><p><b>  第4章 詳細(xì)設(shè)計(jì)</b></p><p>  4.1 定義的數(shù)據(jù)類型</p><p>  4.1.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  1.元素類型、結(jié)點(diǎn)類型和指針類型</p><p>

36、;  typedef struct</p><p><b>  {</b></p><p>  int vexs[max]; </p><p>  string name[max]; </p><p>  int cost[max][max];</p><p>  int distance[max

37、][max];</p><p>  int time[max][max]; </p><p>  int vnm,enm; </p><p>  }mgraph; st;</p><p>  2.圖和鄰接矩陣的定義</p><p><b>  //圖的有關(guān)信息</b></p><

38、;p>  typedef struct</p><p><b>  { </b></p><p>  int sign; </p><p><b>  int len; </b></p><p><b>  int hour;</b></p><p&g

39、t;  int spend;</p><p><b>  }save; </b></p><p>  //存放城市代號(hào)和距離</p><p>  void create(mgraph &g,int n,int e) </p><p><b>  {</b></p><p

40、><b>  int i,j; </b></p><p>  g.vnm=n; </p><p>  g.enm=e; </p><p>  for(i=1;i<=g.vnm;i++)</p><p>  g.vexs[i]=i; </p><p>  //對(duì)應(yīng)數(shù)組下標(biāo)即為城

41、市代號(hào)</p><p>  for(i=1;i<=g.vnm;i++) </p><p><b>  {//初始化</b></p><p>  for(j=1;j<=g.vnm;j++) </p><p><b>  { </b></p>&

42、lt;p><b>  if(i==j) </b></p><p><b>  { </b></p><p>  g.distance[i][j]=0; </p><p>  g.cost[i][j]=0; </p><p>  g.time[i][j]=0; </p>

43、<p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  g.distance[i][j]=MAX; </p><p>  g.cost[i][j]=MAX;</p>

44、<p>  g.time[i][j]=MAX; </p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3.迪杰斯特拉算法和弗洛伊德算法</p><p>

45、;  利用迪杰斯特拉算法和弗洛伊德算法計(jì)算最少花費(fèi)、最短距離、最少時(shí)間。</p><p>  其基本操作的偽碼算法如下:</p><p>  迪杰斯特拉一城至諸城最少花費(fèi)</p><p>  void shortestcost(mgraph g,int v0) </p><p><b>  {</b></p>

46、<p>  int i,v,pre,w,min,k,j; </p><p>  int final[max]; </p><p>  int p[max]; </p><p>  save d[max]; </p><p><b>  int m,n; </b></p><p>  

47、for(v=1;v<=g.vnm;v++) </p><p><b>  { </b></p><p>  final[v]=0;</p><p>  d[v].spend=g.cost[v0][v]; </p><p>  d[v].sign=v; </p><p>  p[v0]=-1;

48、 </p><p>  if(d[v].spend<MAX&&v!=v0) </p><p><b>  p[v]=v0; </b></p><p>  if(d[v].spend==MAX) </p><p><b>  p[v]=-2; </b></p>&l

49、t;p><b>  } </b></p><p>  d[v0].spend=0; </p><p>  final[v0]=-1; </p><p>  for(i=2;i<=g.vnm;i++) </p><p><b>  { </b></p><p>&l

50、t;b>  min=MAX; </b></p><p>  for(w=1;w<=g.vnm;w++) </p><p>  if(!final[w]) </p><p>  if(d[w].spend<min) </p><p><b>  {</b></p><p&g

51、t;<b>  v=w; </b></p><p>  min=d[w].spend; </p><p><b>  } </b></p><p>  final[v]=1; </p><p>  for(w=1;w<=g.vnm;w++) </p><p>  {//

52、修改d中存放的最短距離和前驅(qū)結(jié)點(diǎn)</p><p>  if(!final[w]&&(min+g.cost[v][w]<d[w].spend)) </p><p><b>  { </b></p><p>  d[w].spend=min+g.cost[v][w]; </p><p>  d[w].s

53、ign=w; </p><p><b>  p[w]=v; </b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  /

54、/選擇排序法</b></p><p>  for(i=1;i<g.vnm;i++) </p><p><b>  { </b></p><p><b>  k=i; </b></p><p>  for(j=i+1;j<=g.vnm;j++) </p><

55、p>  if(d[j].spend<d[k].spend) </p><p><b>  k=j; </b></p><p><b>  if(k!=i) </b></p><p><b>  { </b></p><p>  n=d[k].sign;</p&

56、gt;<p>  d[k].sign=d[i].sign;</p><p>  d[i].sign=n; </p><p>  m=d[k].spend;</p><p>  d[k].spend=d[i].spend;</p><p>  d[i].spend=m; </p><p><b>

57、  } </b></p><p><b>  } </b></p><p>  for(i=1;i<=g.vnm;i++) </p><p><b>  { </b></p><p>  if(d[i].sign!=v0) </p><p><b&

58、gt;  { </b></p><p>  cout<<" 從"<<setw(2)<<v0<<"到"<<setw(2)<<d[i].sign<<"城市最少花費(fèi):"<<setw(4)<<d[i].spend<<"

59、"; </p><p>  cout<<" 所經(jīng)過的路徑:"; </p><p>  cout<<g.name[d[i].sign]; </p><p>  pre=p[d[i].sign];</p><p>  while(pre>0) </p><p>

60、;<b>  { </b></p><p>  cout<<"<-"<<g.name[pre]; </p><p>  pre=p[pre]; </p><p><b>  } </b></p><p>  cout<<endl; <

61、;/p><p><b>  } </b></p><p><b>  }</b></p><p>  //迪杰斯特拉一城至諸城最短時(shí)間</p><p>  void shortesttime(mgraph g,int v0) </p><p><b>  {</b

62、></p><p>  int i,v,pre,w,min,k,j; </p><p>  int final[max]; </p><p>  int p[max]; </p><p>  save d[max]; </p><p><b>  int m,n; </b></p>

63、;<p>  for(v=1;v<=g.vnm;v++) </p><p><b>  { </b></p><p>  final[v]=0;</p><p>  d[v].hour=g.time[v0][v]; </p><p>  d[v].sign=v; </p><p&g

64、t;  p[v0]=-1; </p><p>  if(d[v].hour<MAX&&v!=v0) </p><p><b>  p[v]=v0; </b></p><p>  if(d[v].hour==MAX) </p><p><b>  p[v]=-2; </b><

65、;/p><p><b>  } </b></p><p>  d[v0].hour=0; </p><p>  final[v0]=-1; </p><p>  for(i=2;i<=g.vnm;i++) </p><p><b>  { </b></p>&

66、lt;p><b>  min=MAX; </b></p><p>  for(w=1;w<=g.vnm;w++) </p><p>  if(!final[w]) </p><p>  if(d[w].hour<min) </p><p><b>  {</b></p>

67、<p><b>  v=w; </b></p><p>  min=d[w].hour; </p><p><b>  } </b></p><p>  final[v]=1; </p><p>  for(w=1;w<=g.vnm;w++) </p><p&

68、gt;  {//修改d中存放的最短距離和前驅(qū)結(jié)點(diǎn)</p><p>  if(!final[w]&&(min+g.time[v][w]<d[w].hour)) </p><p><b>  { </b></p><p>  d[w].hour=min+g.time[v][w]; </p><p>  

69、d[w].sign=w; </p><p><b>  p[w]=v; </b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b&

70、gt;  //選擇排序法</b></p><p>  for(i=1;i<g.vnm;i++) </p><p><b>  { </b></p><p><b>  k=i; </b></p><p>  for(j=i+1;j<=g.vnm;j++) </p>

71、<p>  if(d[j].hour<d[k].hour) </p><p><b>  k=j; </b></p><p><b>  if(k!=i) </b></p><p><b>  { </b></p><p>  n=d[k].sign;<

72、;/p><p>  d[k].sign=d[i].sign;</p><p>  d[i].sign=n; </p><p>  m=d[k].hour;</p><p>  d[k].hour=d[i].hour;</p><p>  d[i].hour=m; </p><p><b>

73、  } </b></p><p><b>  } </b></p><p>  for(i=1;i<=g.vnm;i++) </p><p><b>  { </b></p><p>  if(d[i].sign!=v0) </p><p><b&

74、gt;  { </b></p><p>  cout<<" 從"<<setw(2)<<v0<<"到"<<setw(2)<<d[i].sign<<"城市最短時(shí)間:"<<setw(2)<<d[i].hour<<" &

75、quot;; </p><p>  cout<<" 所經(jīng)過的路徑:"; </p><p>  cout<<g.name[d[i].sign]; </p><p>  pre=p[d[i].sign];</p><p>  while(pre>0) </p><p>

76、<b>  { </b></p><p>  cout<<"<-"<<g.name[pre]; </p><p>  pre=p[pre]; </p><p><b>  } </b></p><p>  cout<<endl; <

77、/p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  //迪杰斯特拉算法</b></p><p>  void shortestdistan

78、ce(mgraph g,int v0) </p><p><b>  { </b></p><p>  int i,v,pre,w,min,k,j; </p><p>  int final[max]; </p><p>  int p[max]; </p><p>  save d[

79、max]; </p><p><b>  int m,n; </b></p><p>  for(v=1;v<=g.vnm;v++) </p><p><b>  { </b></p><p>  final[v]=0;</p><p>  d[v].len=g.dis

80、tance[v0][v]; </p><p>  d[v].sign=v; </p><p>  p[v0]=-1; </p><p>  if(d[v].len<MAX&&v!=v0) </p><p><b>  p[v]=v0; </b></p><p>  if(d[

81、v].len==MAX) </p><p><b>  p[v]=-2; </b></p><p><b>  } </b></p><p>  d[v0].len=0; </p><p>  final[v0]=-1; </p><p>  for(i=2;i<=g.

82、vnm;i++) </p><p><b>  { </b></p><p><b>  min=MAX; </b></p><p>  for(w=1;w<=g.vnm;w++) </p><p>  if(!final[w]) </p><p>  if(d[w].

83、len<min) </p><p><b>  {</b></p><p><b>  v=w; </b></p><p>  min=d[w].len; </p><p><b>  } </b></p><p>  final[v]=1; &l

84、t;/p><p>  for(w=1;w<=g.vnm;w++) </p><p>  {//修改d中存放的最短距離和前驅(qū)結(jié)點(diǎn)</p><p>  if(!final[w]&&(min+g.distance[v][w]<d[w].len)) </p><p><b>  { </b></p&

85、gt;<p>  d[w].len=min+g.distance[v][w]; </p><p>  d[w].sign=w; </p><p><b>  p[w]=v; </b></p><p><b>  }</b></p><p><b>  }</b>&

86、lt;/p><p><b>  } </b></p><p><b>  //選擇排序法</b></p><p>  for(i=1;i<g.vnm;i++) </p><p><b>  { </b></p><p><b>  k=i;

87、</b></p><p>  for(j=i+1;j<=g.vnm;j++) </p><p>  if(d[j].len<d[k].len) </p><p><b>  k=j; </b></p><p><b>  if(k!=i) </b></p>&l

88、t;p><b>  { </b></p><p>  n=d[k].sign;</p><p>  d[k].sign=d[i].sign;</p><p>  d[i].sign=n; </p><p>  m=d[k].len;</p><p>  d[k].len=d[i].len;&

89、lt;/p><p>  d[i].len=m; </p><p><b>  } </b></p><p><b>  } </b></p><p>  for(i=1;i<=g.vnm;i++) </p><p><b>  { </b><

90、/p><p>  if(d[i].sign!=v0) </p><p><b>  { </b></p><p>  cout<<" 從"<<setw(2)<<v0<<"到"<<setw(2)<<d[i].sign<<&qu

91、ot;城市最短路徑:"<<setw(4)<<d[i].len<<" "; </p><p>  cout<<" 所經(jīng)過的路徑:"; </p><p>  cout<<g.name[d[i].sign]; </p><p>  pre=p[d[i].sig

92、n];</p><p>  while(pre>0) </p><p><b>  { </b></p><p>  cout<<"<-"<<g.name[pre]; </p><p>  pre=p[pre]; </p><p><b

93、>  } </b></p><p>  cout<<endl; </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><p>  4.主函數(shù)的偽

94、碼算法</p><p>  void main() </p><p><b>  { </b></p><p>  mgraph g; </p><p>  create(g,25,30); </p><p><b>  int num; </b></p>&l

95、t;p>  string name; </p><p><b>  do </b></p><p><b>  { </b></p><p>  cout<<" -----------------------交通咨詢系統(tǒng)------------------------ "<<

96、;endl; </p><p>  cout<<" ++++++++++++++++++++++城市名稱及代碼+++++++++++++++++++++++ "<<endl; </p><p>  cout<<" 1 :北京 2 :長春 3 :成都 4 :大連 5 :福州 6 :廣州 7 :貴陽"&

97、lt;<endl; </p><p>  cout<<" 8 :哈爾濱 9 :呼和浩特 10:昆明 11:蘭州 12:柳州 13:南昌"<<endl; </p><p>  cout<<" 14:南寧 15:上海 16:沈陽 17:深圳 18:天津 19:武漢"<<endl;

98、</p><p>  cout<<" 20:烏魯木齊 21:西安 22:西寧 23:徐州 24:鄭州 25:株州"<<endl; </p><p>  cout<<" ++++++++++++++++++++++++++++++++++++++++++++"<<endl; </p>

99、<p>  cout<<endl; </p><p>  cout<<" ******* 1一城至諸城 2任意兩城 3退出系統(tǒng)****"<<endl; </p><p>  cout<<" 請選擇:"; </p><p>  cin>>num; </

100、p><p>  switch(num) </p><p><b>  { </b></p><p>  case 1: onecity(g); break; </p><p>  case 2: twocity(g); break; </p><p>  case 3: cout<<&qu

101、ot; 退出系統(tǒng)成功!"<<endl;break; </p><p>  default: cout<<" 無此選項(xiàng)!請重新輸入:"<<endl; break; </p><p><b>  } </b></p><p><b>  }</b></p&

102、gt;<p>  while(num!=3);</p><p><b>  return; </b></p><p><b>  }</b></p><p>  4.1.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  1.元素類型、結(jié)點(diǎn)類型和指針類型</p>&l

103、t;p>  typedef struct{</p><p>  double xishu;</p><p>  double zhishu;</p><p>  }LNode,*LinkList;</p><p>  LNode a[2],b[3];</p><p><b>  2.加減乘的運(yùn)算<

104、/b></p><p>  下面是加法運(yùn)算的偽代碼:</p><p>  void jia() //加法</p><p><b>  {</b></p><p>  if(a[0].zhishu==a[1].zhishu) //如果指數(shù)相等,讓兩系數(shù)相加</p><p><

105、;b>  {</b></p><p>  b[0].xishu=a[0].xishu+a[1].xishu; // b[0].xishu是兩系數(shù)之和</p><p>  if(a[0].zhishu==0&&a[1].zhishu==0)</p><p><b>  {</b></p><

106、p>  if(a[0].xishu==0&&a[1].xishu==0)</p><p>  cout<<"0"<<endl;</p><p>  if(a[0].xishu==0&&a[1].xishu!=0)</p><p>  cout<<a[1].xishu<

107、<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu==0)</p><p>  cout<<a[0].xishu<<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu!=0)</p><p>  cout

108、<<b[0].xishu<<endl;</p><p><b>  }</b></p><p>  if(a[0].zhishu!=0&&a[1].zhishu!=0)</p><p><b>  {</b></p><p>  if(a[0].xishu==

109、0&&a[1].xishu==0)</p><p>  cout<<"0"<<endl;</p><p>  if(a[0].xishu==0&&a[1].xishu!=0)</p><p>  cout<<a[1].xishu<<"X^"<

110、<a[1].zhishu<<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu==0)</p><p>  cout<<a[0].xishu<<"X^"<<a[0].zhishu<<endl;</p><p>  if(a[0]

111、.xishu!=0&&a[1].xishu!=0)</p><p>  cout<<b[0].xishu<<"X^"<<a[0].zhishu<<endl;</p><p><b>  }</b></p><p><b>  }</b>&l

112、t;/p><p>  if(a[0].zhishu!=a[1].zhishu) //指數(shù)不等</p><p><b>  {</b></p><p>  if(a[0].zhishu==0&&a[1].zhishu!=0)</p><p><b>  {</b></p&g

113、t;<p>  if(a[0].xishu==0&&a[1].xishu==0)</p><p>  cout<<"0"<<endl;</p><p>  if(a[0].xishu==0&&a[1].xishu!=0)</p><p>  cout<<a[1].x

114、ishu<<"X^"<<a[1].zhishu<<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu==0)</p><p>  cout<<a[0].xishu<<endl;</p><p>  if(a[0].xishu!=0&a

115、mp;&a[1].xishu!=0)</p><p>  cout<<a[0].xishu<<"+"<<a[1].xishu<<"X^"<<a[1].zhishu<<endl;</p><p><b>  }</b></p><p

116、>  if(a[1].zhishu==0&&a[0].zhishu!=0)</p><p><b>  {</b></p><p>  if(a[0].xishu==0&&a[1].xishu==0)</p><p>  cout<<"0"<<endl;</

117、p><p>  if(a[0].xishu==0&&a[1].xishu!=0)</p><p>  cout<<a[1].xishu<<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu==0)</p><p>  cout<<a[0].x

118、ishu<<"X^"<<a[0].zhishu<<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu!=0)</p><p>  cout<<a[0].xishu<<"X^"<<a[0].zhishu<<"

119、;+"<<a[1].xishu<<endl;</p><p><b>  }</b></p><p>  if(a[0].zhishu!=0&&a[1].zhishu!=0)</p><p><b>  {</b></p><p>  if(a[0]

120、.xishu==0&&a[1].xishu==0)</p><p>  cout<<"0"<<endl;</p><p>  if(a[0].xishu==0&&a[1].xishu!=0)</p><p>  cout<<a[1].xishu<<"X^&q

121、uot;<<a[1].zhishu<<endl;</p><p>  if(a[0].xishu!=0&&a[1].xishu==0)</p><p>  cout<<a[0].xishu<<"X^"<<a[0].zhishu<<endl;</p><p> 

122、 if(a[0].xishu!=0&&a[1].xishu!=0)</p><p>  cout<<a[0].xishu<<"X^"<<a[0].zhishu<<"+"<<a[1].xishu<<"X^"<<a[1].zhishu<<endl;

123、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3. 主函數(shù)的偽代碼:</p><p>  void main()</p><p>&

124、lt;b>  {</b></p><p><b>  LNode L;</b></p><p><b>  int d;</b></p><p>  cout<<" ★歡迎使用一元高次多項(xiàng)式的加、減、乘運(yùn)算系統(tǒng)★"<<endl;<

125、/p><p>  cout<<" 請先創(chuàng)建之后進(jìn)行其他操作:"<<endl<<endl;</p><p>  for(d=1;d!=0;)</p><p><b>  {</b></p><p>  cout<<"

126、 ※※※※※※※※※※※※※※※※※※※※※※※※"<<endl;</p><p>  cout<<" ※ 1→創(chuàng)建 ※"<<endl;</p><p>  cout<<"

127、 ※ 2→加法 ※"<<endl;</p><p>  cout<<" ※ 3→減法 ※"<<endl;</p><p>  cou

128、t<<" ※ 4→乘法 ※"<<endl;</p><p>  cout<<" ※ 5→顯示 ※"<<endl;</p

129、><p>  cout<<" ※ 0→退出 ※"<<endl;</p><p>  cout<<" ※※※※※※※※※※※※※※※※※※※※※※※※"<<endl;</p&

130、gt;<p>  cout<<" 請選擇您所需要的服務(wù):"<<endl<<endl;</p><p><b>  cin>>d;</b></p><p><b>  switch(d)</b></p><p

131、><b>  {</b></p><p>  case 1:chuangjian(L);break;</p><p>  case 2:jia();break;</p><p>  case 3:jian();break;</p><p>  case 4:cheng();break;</p><

132、;p>  case 5:xianshi();break;</p><p>  case 0:break;</p><p>  default:cout<<"輸入有誤,請重新輸入:"<<endl;</p><p><b>  }</b></p><p><b>

133、  }</b></p><p>  cout<<"謝謝使用!"<<endl;</p><p><b>  }</b></p><p>  4.2 函數(shù)間的調(diào)用關(guān)系</p><p>  4.2.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  函數(shù)間的

134、調(diào)用關(guān)系如圖4-1所示。</p><p><b>  . </b></p><p>  圖4-1函數(shù)間的調(diào)用關(guān)系</p><p>  4.2.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  函數(shù)間的調(diào)用關(guān)系如圖4-2所示。</p><p>  圖4-1函數(shù)間的調(diào)用關(guān)系</p>

135、<p><b>  第5章 調(diào)試分析</b></p><p>  5.1 調(diào)試過程分析</p><p>  5.1.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  程序主要是通過各種程序的調(diào)用關(guān)系運(yùn)行,只要按著系統(tǒng)提示進(jìn)行錄入就可以了。</p><p>  5.1.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p&g

136、t;<p>  程序主要以鏈表建立一元高次多項(xiàng)式,以數(shù)組的形式存儲(chǔ)一元高次多項(xiàng)式,只要按著系統(tǒng)提示進(jìn)行錄入就可以了。</p><p>  5.2 算法的時(shí)空分析</p><p>  5.2.1 交通咨詢系統(tǒng)設(shè)計(jì)</p><p>  (1)由于有序表采用帶頭結(jié)點(diǎn)的有序單鏈表,并增設(shè)尾指針和表的長度兩個(gè)標(biāo)識(shí),各種操作的算法時(shí)間復(fù)雜度比較合理,shortes

137、tdistance2,shortestcost2,shortesttime2等操作的時(shí)間復(fù)雜度均為O(n),其中n為鏈表的長度。</p><p>  (2)構(gòu)造有序集算法Create讀入n個(gè)元素,逐個(gè)用for循環(huán)輸入元素后,在直接初始化各個(gè)路徑花費(fèi)和城市名稱,所以時(shí)間復(fù)雜度也是O(n)。</p><p>  5.2.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>

138、; ?。?)由于有序表采用帶頭結(jié)點(diǎn)的有序單鏈表,并增設(shè)a[2],b[3]兩個(gè)數(shù)組鏈表,并且有一個(gè)for循環(huán)語句,所以時(shí)間復(fù)雜度是O(n)。</p><p>  (2)構(gòu)造時(shí)的chuangjian直接由手工錄入,沒有涉及到任何的循環(huán)語句,則時(shí)間復(fù)雜度是O(0)。</p><p><b>  第6章 使用說明</b></p><p>  6.1 交

139、通咨詢系統(tǒng)設(shè)計(jì)</p><p>  程序運(yùn)行后用戶根據(jù)提,按照自己所需要的查找方式示輸入即可。</p><p>  6.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p>  程序運(yùn)行后用戶根據(jù)提示輸入即可。</p><p><b>  第7章 測試結(jié)果</b></p><p>  7.1 交通咨

140、詢系統(tǒng)設(shè)計(jì)</p><p>  圖7-1 交通系統(tǒng)的初始界面</p><p>  圖7-2 一城到諸城的最短路徑</p><p>  圖7-3一城到諸城的最少花費(fèi)</p><p><b>  .</b></p><p>  圖7-4 兩城之間的最短路徑查詢</p><p>

141、  圖7-5 兩城之間最少花費(fèi)查詢</p><p>  7.2 一元高次多項(xiàng)式的加、減、乘運(yùn)算</p><p><b>  圖7-6初始化界面</b></p><p>  圖7-8 創(chuàng)建界面</p><p><b>  圖7-9 加法</b></p><p><b&g

142、t;  圖7-10 減法</b></p><p><b>  圖7-11 乘法</b></p><p><b>  圖7-12顯示加法</b></p><p><b>  圖7-12顯示乘法</b></p><p>  圖7-13 顯示減法</p>&

143、lt;p><b>  總 結(jié)</b></p><p>  本設(shè)計(jì)使用當(dāng)今較為流行的可視化編程工具……</p><p>  通過課程設(shè)計(jì)不僅學(xué)習(xí)了VC++,而且技術(shù)素質(zhì)和實(shí)踐能力有了進(jìn)一步的提高,對(duì)提出問題、思考問題與解決問題有了進(jìn)一步的深刻認(rèn)識(shí)。同時(shí)對(duì)軟件開發(fā)也有了更為全面的了解,通過自己的努力思考、學(xué)習(xí)研究與指導(dǎo)老師的認(rèn)真指導(dǎo),使自己的能力得到了進(jìn)一步鍛煉與

144、提高。</p><p>  通過課程設(shè)計(jì)不僅學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu),而且技術(shù)素質(zhì)和實(shí)踐能力有了進(jìn)一步的提高,對(duì)提出問題、思考問題與解決問題有了進(jìn)一步的深刻認(rèn)識(shí)。同時(shí)對(duì)軟件開發(fā)也有了更為全面的了解,通過自己的努力思考、學(xué)習(xí)研究與指導(dǎo)老師的認(rèn)真指導(dǎo),使自己的能力得到了進(jìn)一步鍛煉與提高。通過這次課設(shè),對(duì)于程序中用到的自己又積累了不少編程的經(jīng)驗(yàn)。</p><p>  程序十進(jìn)制四則運(yùn)算計(jì)算器應(yīng)用到了二叉鏈

145、表的存儲(chǔ)方式、棧、中綴后綴表達(dá)式、遍歷等知識(shí)點(diǎn)。由于表達(dá)式中存在字符和數(shù)字,因此采用了字符和數(shù)字的共用體來作為數(shù)據(jù)的存儲(chǔ)方式。對(duì)于表達(dá)式可能輸入有誤的問題,程序中加入了許多判斷,減少了程序執(zhí)行錯(cuò)誤表達(dá)式的情況。參考文獻(xiàn)</p><p> ?。?] 王立柱.C/C++與數(shù)據(jù)結(jié)構(gòu).北京:清華大學(xué)出版社,2002_2.</p><p> ?。?] 劉振鵬,張小莉,鄭艷娟.?dāng)?shù)據(jù)結(jié)構(gòu)(第二版).北京

146、:中國鐵道出版社,2007_4.</p><p> ?。?] 唐寧九.?dāng)?shù)據(jù)結(jié)構(gòu)與算法分析.成都:四川大學(xué)出版社,2006_8.</p><p> ?。?] 李春葆,金晶.?dāng)?shù)據(jù)結(jié)構(gòu)教程.北京:清華大學(xué)出版社,2006_11.</p><p>  [5] 周靄如,林偉健.C++程序設(shè)計(jì)基礎(chǔ).北京:電子工業(yè)出版社,2003_8.</p><p> 

147、?。?] 嚴(yán)蔚敏,吳偉民,米寧.?dāng)?shù)據(jù)結(jié)構(gòu)題集(C語言版).北京:清華大學(xué)出版社,2009.4</p><p>  [7] 斯慶巴拉.數(shù)據(jù)結(jié)構(gòu)(C語言描述).北京:中國水利水電出版社,2005.</p><p><b>  附 錄</b></p><p><b>  交通系統(tǒng)源代碼:</b></p>&

148、lt;p>  #include <iostream> </p><p>  #include <iomanip> </p><p>  #include <string> </p><p>  using namespace std; </p><p>  const int max=100; <

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論