版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一元多項(xiàng)式運(yùn)算課程設(shè)計(jì)
- 課程設(shè)計(jì)--一元多項(xiàng)式計(jì)算
- 一元多項(xiàng)式運(yùn)算課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---一元多項(xiàng)式
- 課程設(shè)計(jì)---一元多項(xiàng)式的代數(shù)運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----一元多項(xiàng)式
- 一元多項(xiàng)式計(jì)算(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 一元稀疏多項(xiàng)式計(jì)算器課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---一元多項(xiàng)式計(jì)算
- 課程設(shè)計(jì)報(bào)告---一元多項(xiàng)式計(jì)算器
- 一元多項(xiàng)式課程設(shè)計(jì)--用c語言實(shí)現(xiàn)一元多項(xiàng)式的加減法計(jì)算
- 課程設(shè)計(jì)報(bào)告--一元多項(xiàng)式計(jì)算vs迷宮求解
- 一元多項(xiàng)式的計(jì)算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-一元多項(xiàng)式的代數(shù)運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-一元多項(xiàng)式計(jì)算器
- c++課程設(shè)計(jì)---一元多項(xiàng)式簡單計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-一元多項(xiàng)式加減運(yùn)算
- c++課程設(shè)計(jì)--一元多項(xiàng)式簡單計(jì)算器
評(píng)論
0/150
提交評(píng)論