




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)實驗報告項目名稱 線性表的操作 專業(yè)班級 學(xué) 號 姓 名 實驗成績:批閱教師:2013年 03 月 31 日實驗一 線性表的操作 實驗學(xué)時: 2 實驗地點: 科教樓四樓 實驗日期: 2013/3/20 1需求分析(1)程序設(shè)計的任務(wù):A.應(yīng)用線性表的基本操作,插入、刪除、查找,以及線性表合并等運算在順序存儲結(jié)構(gòu)和鏈接存儲結(jié)構(gòu)上的運算。B. 實現(xiàn)一元n次多項式的加法運算(2)規(guī)定:輸入的形式和輸入值的范圍:長整型數(shù)組0100輸出的形式:多項式形式輸出程序所能達到的功能:完成多項式的輸入、顯示;實現(xiàn)多項式的加法操作測試數(shù)據(jù):A . 正確的輸入及其輸出結(jié)果: 分別輸入兩個多項式的系數(shù)和指數(shù),
2、分別以0結(jié)束,例如3*x2,請輸入3 24 6 2 5 8 7 1 00第一個多項式輸入完畢,請輸入下一個7 0 3 4 6 8 25 1 00多項式輸入完畢請輸入你想要進行的運算,1代表+,2代表-26*x8 + 8*x7 + 4*x6 + 2*x5 + 3*x4 + 25*x + -6Process completed.B . 錯誤的輸入及其輸出結(jié)果: 分別輸入兩個多項式的系數(shù)和指數(shù),分別以0結(jié)束,例如3*x2,請輸入3 24 5 1 2 3 6 5 5 0第一個多項式輸入完畢,請輸入下一個8 4 1 0 3 4 6 9 7 00多項式輸入完畢2概要設(shè)計抽象數(shù)據(jù)類型的定義:public M
3、ultinomial1()主程序的流程: 定義類-à定義主函數(shù)-àà定義兩個線性表用來存儲多項式-àà提示用戶輸入多項式的系數(shù)與指數(shù)-àà將用戶輸入的多項式存入線性表-àà將兩個線性表的元素比較并存入同一個線性表以實現(xiàn)多項式相加減-à-à輸出多項式相加減后的結(jié)果各程序模塊之間的層次(調(diào)用)關(guān)系:在Alist、Blist、Clist對堆申請空間時調(diào)用LinkList()函數(shù),將多項式存入Alist、Blist中調(diào)用Add()函數(shù),講Alist、Blist兩個線性表比較、排序并存入Clis
4、t中調(diào)用Sort()函數(shù)。3詳細設(shè)計偽碼算法:構(gòu)建鏈表:int newindex, newfactor; Scanner scanner = new Scanner(System.in); LinkedList Alist = new LinkedList(); LinkedList Blist = new LinkedList(); LinkedList Clist = new LinkedList(); Node pNew;第一個多項式:System.out.println("請輸入第一個多項式的系數(shù)和指數(shù),例如2*x2,請輸入2 2,以0 0表示結(jié)束"); newfa
5、ctor = scanner.nextInt(); newindex = scanner.nextInt(); while (newfactor != 0) pNew = new Node(); pNew.factor = newfactor; pNew.index = newindex; Alist.Add(pNew); newfactor = scanner.nextInt(); newindex = scanner.nextInt(); 第二個多項式:System.out.println("第一個多項式輸入完畢,請輸入第二個多項式"); newfactor = sca
6、nner.nextInt(); newindex = scanner.nextInt(); while (newfactor != 0) pNew = new Node(); pNew.factor = newfactor; pNew.index = newindex; Blist.Add(pNew); newfactor = scanner.nextInt(); newindex = scanner.nextInt(); System.out.println("多項式輸入完畢");兩多項式相加:int Ai = 0, Bi = 0; Node pc; Node pa =
7、Alist.head.next, pb = Blist.head.next; while (Ai < Alist.size && Bi < Blist.size) if (pa.index > pb.index) pc = new Node(); pc.index = pa.index; pc.factor = pa.factor; Clist.Add(pc); pc = pc.next; pa = pa.next; Ai+; Clist.size+; else if (pa.index < pb.index) pc = new Node(); pc.i
8、ndex = pb.index; pc.factor = pb.factor; Clist.Add(pc); pc = pc.next; pb = pb.next; Bi+; Clist.size+; else if (pa.index = pb.index) if (pa.factor + pb.factor != 0) pc = new Node(); pc.index = pa.index; pc.factor = pa.factor + pb.factor; Clist.Add(pc); pc = pc.next; pa = pa.next; pb = pb.next; Clist.s
9、ize+; Ai+; Bi+; else pa = pa.next; pb = pb.next; Ai+; Bi+; 多項式中未加的部分運算:while (Ai < Alist.size) pc = new Node(); pc.index = pa.index; pc.factor = pa.factor; Clist.Add(pc); pa = pa.next; pc = pc.next; Ai+; Clist.size+; while (Bi < Blist.size) pc = new Node(); pc.index = pb.index; pc.factor = pb.
10、factor; Clist.Add(pc); pb = pb.next; pc = pc.next; Bi+; Clist.size+; Node pc1 = Clist.head.next; for (int Ci = 0; pc1.next != null; Ci+) System.out.print(pc1.factor+"*x"+pc1.index+" + "); pc1 = pc1.next; System.out.print(pc1.factor+"*x"+pc1.index); 函數(shù)和過程的調(diào)用關(guān)系圖:4調(diào)試分析調(diào)試過程
11、中遇到的問題是如何解決的:參考課本、和同學(xué)交流討論、上網(wǎng)查詢對設(shè)計與實現(xiàn)的回顧討論和分析:算法的時空分析和改進設(shè)想:經(jīng)驗和體會:平時必須多寫多看程序,多加練習(xí),并在寫代碼之前構(gòu)思好算法和流程。5用戶使用說明操作步驟:A.Build fileB.Run fileC.根據(jù)提示輸入多項式的系數(shù)與指數(shù)(以空格分開各項)D.然后EnterE.運行結(jié)果就會實現(xiàn)兩個多項式的相加減6測試結(jié)果請輸入第一個多項式的系數(shù)和指數(shù),例如2*x2,請輸入2 2,以0 0表示結(jié)束1 5 4 6 2 3 0 45 5 2 7 9 5 0第一個多項式輸入完畢,請輸入第二個多項式8 3 4 9 6 1 0 22 1 4 5 66
12、 7 1 5 3 00多項式輸入完畢1*x5 + 4*x6 + 2*x3 + 5*x2 + 7*x9 + 5*x0 + 8*x3 + 4*x9 + 6*x1Process completed.請輸入第一個多項式的系數(shù)和指數(shù),例如2*x2,請輸入2 2,以0 0表示結(jié)束41 85 5 7 9 5 5 2 4 45 4 5 1 2 4 512 00第一個多項式輸入完畢,請輸入第二個多項式463 5 1 2 2 5 9 3 26 26 5 21 3 255 62 2 2 3 5 600 0 0 0 多項式輸入完畢41*x85 + 5*x7 + 472*x5 + 6*x2 + 4*x45 + 6*x5
13、 + 9*x3 + 26*x26 + 5*x21 + 3*x255 + 63*x2 + 4*x512 + 2*x3 + 5*x6Process completed. 請輸入第一個多項式的系數(shù)和指數(shù),例如2*x2,請輸入2 2,以0 0表示結(jié)束15 4 6 4169 4 91 1 22 3 50 3 20 2 532 + 00 0at java.util.Scanner.throwFor(Scanner.java:840)at java.util.Scanner.next(Scanner.java:1461)at java.util.Scanner.nextInt(Scanner.java:20
14、91)at java.util.Scanner.nextInt(Scanner.java:2050)at Multinomial1.main(Multinomial1.java:34)Process completed.7附錄帶注釋的源程序代碼:鏈表:public class Node /定義Node類 public int index; /定義參數(shù) public int factor; public Node last; public Node next;public class LinkedList /定義LinkedList類 public LinkedList() head = new
15、 Node(); head.last = null; tail = head; tail.next = null; public Node head; public Node tail; public int size = 0; public void Add(Node pNew) /實現(xiàn)線性表的插入 tail.next = pNew; tail = pNew; tail.next = null; size+; public void Sort() /排序 Node p = head.next; for (int i = 0; i < size; i+) if (p.index <
16、 p.next.index) p.next.next.last = p; p.last = p.next; p.next = p.next.next; p.last.next = p; head.next = p.last; else p = p.next; for (int j = 1; j < size - i; j+) if (p.index < p.next.index) p.next.next.last = p; p.last = p.next; p.next = p.next.next; p.last.next = p; else p = p.next; /* * (#
17、)Multinomial1.java * * * author * version 1.00 2013/3/19 */import java.util.Scanner;public class Multinomial1 /定義Multinomaill類 public Multinomial1() public static void main(String args) /主函數(shù) int newindex, newfactor; Scanner scanner = new Scanner(System.in); /調(diào)用LinkedList()函數(shù) LinkedList Alist = new L
18、inkedList(); LinkedList Blist = new LinkedList(); LinkedList Clist = new LinkedList(); Node pNew; System.out.println("請輸入第一個多項式的系數(shù)和指數(shù),例如2*x2,請輸入2 2,以0 0表示結(jié)束"); /照此輸入多項式的系數(shù)與指數(shù) newfactor = scanner.nextInt(); newindex = scanner.nextInt(); while (newfactor != 0) pNew = new Node(); pNew.factor
19、= newfactor; pNew.index = newindex; Alist.Add(pNew); newfactor = scanner.nextInt(); newindex = scanner.nextInt(); System.out.println("第一個多項式輸入完畢,請輸入第二個多項式"); newfactor = scanner.nextInt(); newindex = scanner.nextInt(); while (newfactor != 0) pNew = new Node(); pNew.factor = newfactor; pNew
20、.index = newindex; Blist.Add(pNew); newfactor = scanner.nextInt(); newindex = scanner.nextInt(); System.out.println("多項式輸入完畢"); int Ai = 0, Bi = 0; Node pc; Node pa = Alist.head.next, pb = Blist.head.next; /實現(xiàn)兩個多項式的相加減 while (Ai < Alist.size && Bi < Blist.size) if (pa.index &
21、gt; pb.index) pc = new Node(); pc.index = pa.index; pc.factor = pa.factor; Clist.Add(pc); pc = pc.next; pa = pa.next; Ai+; Clist.size+; else if (pa.index < pb.index) pc = new Node(); pc.index = pb.index; pc.factor = pb.factor; Clist.Add(pc); pc = pc.next; pb = pb.next; Bi+; Clist.size+; else if (
22、pa.index = pb.index) if (pa.factor + pb.factor != 0) pc = new Node(); pc.index = pa.index; pc.factor = pa.factor + pb.factor; Clist.Add(pc); pc = pc.next; pa = pa.next; pb = pb.next; Clist.size+; Ai+; Bi+; else pa = pa.next; pb = pb.next; Ai+; Bi+; while (Ai < Alist.size) pc = new Node(); pc.inde
23、x = pa.index; pc.factor = pa.factor; Clist.Add(pc); pa = pa.next; pc = pc.next; Ai+; Clist.size+; while (Bi < Blist.size) pc = new Node(); pc.index = pb.index; pc.factor = pb.factor; Clist.Add(pc); pb = pb.next; pc = pc.next; Bi+; Clist.size+; Node pc1 = Clist.head.next; for (int Ci = 0; pc1.next
24、 != null; Ci+) System.out.print(pc1.factor+"*x"+pc1.index+" + "); pc1 = pc1.next; System.out.print(pc1.factor+"*x"+pc1.index); 數(shù)組:/* * (#)Multinomial.java * * * author * version 1.00 2013/3/19 */import java.util.Scanner;public class Multinomial public static void main(S
25、tring args) int Asize = 0, Bsize = 0, Csize = 0; int temp; int operator; int Afactor = new int100; int Aindex = new int100; int Bfactor = new int100; int Bindex = new int100; int Cfactor = new int100; int Cindex = new int100; Scanner scanner = new Scanner(System.in); System.out.println("分別輸入兩個多
26、項式的系數(shù)和指數(shù),分別以0結(jié)束,例如3*x2,請輸入3 2"); AfactorAsize = scanner.nextInt(); AindexAsize = scanner.nextInt(); Asize+; while (AfactorAsize = 0) AfactorAsize = scanner.nextInt(); if (AfactorAsize = 0) System.out.println("第一個多項式輸入完畢,請輸入下一個"); break; AindexAsize = scanner.nextInt(); Asize+; Bfactor
27、Bsize = scanner.nextInt(); BindexBsize = scanner.nextInt(); Bsize+; while (BfactorBsize = 0) BfactorBsize = scanner.nextInt(); if (BfactorBsize = 0) System.out.println("多項式輸入完畢"); break; BindexBsize = scanner.nextInt(); Bsize+; System.out.println("請輸入你想要進行的運算,1代表+,2代表-"); operato
28、r = scanner.nextInt(); for (int Ai = 0; Ai < Asize; Ai+) for (int Aj = 0; Aj < Asize-Ai; Aj+) if (AindexAj < AindexAj+1) temp = AindexAj+1; AindexAj+1 = AindexAj; AindexAj = temp; temp = AfactorAj+1; AfactorAj+1 = AfactorAj; AfactorAj = temp; for (int Bi = 0; Bi < Bsize; Bi+) for (int Bj
29、 = 0; Bj < Bsize-Bi; Bj+) if (BindexBj < BindexBj+1) temp = BindexBj+1; BindexBj+1 = BindexBj; BindexBj = temp; temp = BfactorBj+1; BfactorBj+1 = BfactorBj; BfactorBj = temp; int Ak = 0, Bk = 0; if (operator = 1) for (; Ak < Asize && Bk < Bsize;) if (AindexAk > BindexBk) Cinde
30、xCsize = AindexAk; CfactorCsize = AfactorAk; Csize+; Ak+; else if (AindexAk < BindexBk) CindexCsize = BindexBk; CfactorCsize = BfactorBk; Csize+; Bk+; else if (AfactorAk + BfactorBk != 0) CindexCsize = AindexAk; CfactorCsize = AfactorAk + BfactorBk; Csize+; Ak+; Bk+; else if (operator = 2) for (;
31、 Ak < Asize && Bk < Bsize;) if (AindexAk > BindexBk) CindexCsize = AindexAk; CfactorCsize = AfactorAk; Csize+; Ak+; else if (AindexAk < BindexBk) CindexCsize = BindexBk; CfactorCsize = BfactorBk; Csize+; Bk+; else if (AfactorAk - BfactorBk != 0) CindexCsize = AindexAk; CfactorCsi
32、ze = AfactorAk - BfactorBk; Csize+; Ak+; Bk+; else System.out.println("輸入運算符錯誤"); while (Ak < Asize) CindexCsize = AindexAk; CfactorCsize = AfactorAk; Csize+; Ak+; while (Bk < Bsize) CindexCsize = BindexBk; CfactorCsize = BfactorBk; Csize+; Bk+; for (int Ci = 0; Ci < Csize-1; Ci+)
33、 if (CindexCi = 1) System.out.print(CfactorCi+"*x + "); else System.out.print(CfactorCi+"*x"+CindexCi+" + "); if (CindexCsize-1 = 0) System.out.print(CfactorCsize-1); else System.out.println(CfactorCsize-1+"*x"+CindexCsize-1); 百位數(shù)相加:/* * (#)Addition.java * * *
34、 author * version 1.00 2013/3/20 */import java.util.Scanner;public class Addition public Addition() public static void main(String args) int Anumber = new int 100; int Bnumber = new int 100; int Cnumber = new int 101; Cnumber0 = 0; int Asize = 0, Bsize = 0, Csize = 0; String str; Scanner scanner = new Scanner(System.in); System.out.println("請輸入第一個多項式,并以#結(jié)束"); str = scanner.nextLine(); int
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社交網(wǎng)絡(luò)用戶消費行為分析報告
- 金融科技企業(yè)的財務(wù)分析與投資前景預(yù)測
- 跨學(xué)科視角下的學(xué)校開展生民教育教學(xué)活動探索
- 餐飲行業(yè)市場現(xiàn)狀與營銷策略分析
- 高效時間管理法讓生活更有序
- 天津2025年02月天津市應(yīng)急管理事務(wù)中心公開招考1名工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 高效辦公足浴店團隊管理的關(guān)鍵
- 趣味學(xué)AI探索科技的無窮魅力
- 足浴店顧客滿意度提升策略
- 浙江鴨2025版高考歷史大三輪復(fù)習(xí)下篇第二部分題型四表格定量分析類選擇題學(xué)案人民版
- 果實酚類和揮發(fā)性物質(zhì)含量特征及其與果實品質(zhì)關(guān)系的研究
- 2023年東華高級中學(xué)中考自招數(shù)學(xué)復(fù)習(xí)題及答案解析
- 結(jié)果比過程重要辯論賽
- JTG C10-2007 公路勘測規(guī)范
- 工程結(jié)算審核項目投標(biāo)技術(shù)方案造價咨詢服務(wù)方案
- 高中英語2024屆新高考詞匯轉(zhuǎn)換匯總(共六組)
- 2024年廣州市高三一模高考英語試卷試題答案詳解(含作文范文)
- 《養(yǎng)老護理員》-課件:職業(yè)安全和個人防護知識
- GB 19644-2024食品安全國家標(biāo)準乳粉和調(diào)制乳粉
- TCASWSS 025-2024 老年大學(xué)課程設(shè)置規(guī)范
- 2024年河南省專升本考試管理學(xué)測試題含解析
評論
0/150
提交評論