上海交大-數(shù)據(jù)結(jié)構(gòu)-試驗報告_第1頁
上海交大-數(shù)據(jù)結(jié)構(gòu)-試驗報告_第2頁
上海交大-數(shù)據(jù)結(jié)構(gòu)-試驗報告_第3頁
上海交大-數(shù)據(jù)結(jié)構(gòu)-試驗報告_第4頁
上海交大-數(shù)據(jù)結(jié)構(gòu)-試驗報告_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)實驗報告說明:本軟件在win764位系統(tǒng)測試經(jīng)過,需要安裝.net3.5以上版本七、數(shù)制變換問題問題描繪關(guān)于輸入的隨意一個非負十進制整數(shù),輸出與其等值的其余進制數(shù)(二進制、八進制或十六進制)。任務(wù)要求成立模型,確立儲蓄結(jié)構(gòu);對隨意十進制數(shù),實現(xiàn)進制變換問題。實驗指導實驗種類:設(shè)計實驗。本實驗要求同學們針對“數(shù)制變換”這個經(jīng)典的問題,應(yīng)用棧的儲蓄結(jié)構(gòu),自己設(shè)計一個方案,并上機實現(xiàn)。此實驗的目的是培育學生對數(shù)據(jù)結(jié)構(gòu)的簡單應(yīng)用能力。預備知識:棧的基本定義、棧的基本操作算法、棧的儲蓄結(jié)構(gòu)。實現(xiàn)方法提示:1)以十進制變換為八進制為例。將十進制數(shù)整除8,計算過程中獲得的余數(shù)挨次進棧,按出棧序列輸出

2、棧中的內(nèi)容即為與輸入的十進制數(shù)對應(yīng)的八進制數(shù)。設(shè)Conversion函數(shù)履行數(shù)制變換的操作,對(1348)10變換為8進制的過程以下:NNdiv8Nmod8134816841682102125202設(shè)計數(shù)制變換的算法。實現(xiàn)方案方案描繪:本方案采納C#語言實現(xiàn),實現(xiàn)十進制與其余進制直接的變換實現(xiàn)代碼:主要實現(xiàn)代碼以下usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windo

3、ws.Forms;namespace進制變換器publicpartialclassMainFrm:FormpublicMainFrm()InitializeComponent();privatevoidMainFrm_Load_1(objectsender,EventArgse)txtStart.Focus();/十進制變換為八進制/privatevoidradio_dto_Click_1(objectsender,EventArgse)txtEnd.Text=;if(txtStart.Text.Length!=0)TODO:十進制轉(zhuǎn)為八進制。Int32i;tryi=Convert.ToInt

4、32(txtStart.Text.Trim();lblTitle.Text=十進制轉(zhuǎn)為八進制;txtEnd.Text=Convert.ToString(i,8);catchMessageBox.Show(請輸入合法的十進制數(shù),提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);elseMessageBoxShow(請供給變換數(shù)據(jù)!,提示,MessageBoxButtons.0K,MessageBoxIcon.Warning);txtStart.Focus();十進制變換為十六進制privatevoidradio_dth_Click(objectsen

5、der,EventArgse)txtEnd.Text=;if(txtStart.Text.Length!=0)TODO:十進制變換為十六進制。Int32i;tryi=Convert.ToInt32(txtStart.Text.Trim();lblTitle.Text=十進制變換為十六進制;txtEnd.Text=Convert.ToString(i,16);catchMessageBoxShow(”請輸入合法的十進制數(shù),提示MessageBoxButtons.OK,MessageBoxIcon.Warning);elseMessageBoxShow(請供給變換數(shù)據(jù)!,提示,MessageBox

6、Buttons.0K,MessageBoxIcon.Warning);txtStart.Focus();十進制變換為二進制privatevoidradio_dtb_Click(objectsender,EventArgse)txtEnd.Text=;if(txtStart.Text.Length!=0)TODO:十進制變換為二進制。Int32i;tryi=Convert.ToInt32(txtStart.Text.Trim();lblTitle.Text=十進制變換為二進制;txtEnd.Text=Convert.ToString(i,2);catchMessageBoxShow(”請輸入合法

7、的十進制數(shù),”提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);elseMessageBoxShow(請供給變換數(shù)據(jù)!,提示,MessageBoxButtons.0K,MessageBoxIcon.Warning);txtStart.Focus();/八進制到十進制/privatevoidradio_otd_Click(objectsender,EventArgse)txtEnd.Text=;if(txtStart.Text.Length!=0)/TODO:八進制到十進制。trylblTitle.Text=八進制到十進制;txtEnd.Text=C

8、onvert.ToString(Convert.ToInt32(txtStart.Text.Trim(),8);/八進制轉(zhuǎn)為十進制catchMessageBox.Show(請供給合法的八進制數(shù),提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);elseMessageBoxShow(請供給變換數(shù)據(jù)!,提示,MessageBoxButtons.0K,MessageBoxIcon.Warning);txtStart.Focus();十六進制到十進制privatevoidradio_htd_Click(objectsender,EventArgse)txt

9、End.Text=;if(txtStart.Text.Length!=0)tryTODO:十六進制到十進制。lblTitle.Text=十六進制到十進制txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text,16);catchMessageBox.Show(請供給合法的十六進制數(shù)!,提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);elseMessageBoxShow(請供給變換數(shù)據(jù)!,提示,MessageBoxButtons.0K,MessageBoxIcon.Warning);txt

10、Start.Focus();二進制到十進制privatevoidradio_btd_Click(objectsender,EventArgse)txtEnd.Text=;if(txtStart.Text.Length!=0)try/TODO:二進制到十進制。lblTitle.Text=二進制到十進制;txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text,2);catchMessageBoxShow(”請供給合法的二進制數(shù)!,提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);elseMe

11、ssageBoxShow(請供給變換數(shù)據(jù)!,提示,MessageBoxButtons.0K,MessageBoxIcon.Warning);txtStart.Focus();privatevoidreset_Click(objectsender,EventArgse)txtStart.Text=;txtEnd.Text=;txtStart.Focus();privatevoidclose_Click(objectsender,EventArgse)this.Close();測試過程:1.不輸入數(shù)據(jù),軟件會溫馨提示?輸入數(shù)據(jù)選擇變換模式3?測試達成,結(jié)果正確十四、Huffman編碼1?問題描繪設(shè)

12、某編碼系統(tǒng)共有n個字符,使用頻次分別為1,2,n,設(shè)計一個不等長的編碼方案,輸出每個字符對應(yīng)的編碼,使得該編碼系統(tǒng)的空間效率最好。任務(wù)要求掌握Huffman樹的見解、特色和儲蓄結(jié)構(gòu);掌握Huffman樹的結(jié)構(gòu)算法;運用Huffman樹解決編碼問題。實驗指導實驗種類:設(shè)計實驗。本實驗要求同學們針對Huffman樹”這個經(jīng)典的問題,應(yīng)用二叉樹這類數(shù)據(jù)結(jié)構(gòu),自己設(shè)計一個解決方案,并上機實現(xiàn)。此實驗?zāi)康氖桥嘤龑W生對數(shù)據(jù)結(jié)構(gòu)的簡單應(yīng)用能力。預備知識:二叉樹的定義、二叉樹的基本操作算法。實現(xiàn)方法提示:1)以字符出現(xiàn)的次數(shù)1,為權(quán)值,n個結(jié)點作為根結(jié)點分別組成n棵二叉樹;2n全部二叉樹中采納兩棵根結(jié)點權(quán)值最

13、小的樹作為左右子樹結(jié)構(gòu)一棵新二叉樹,新二叉樹根結(jié)點的權(quán)值為左右子樹上根結(jié)點的權(quán)值之和,并刪除原來的兩棵二叉樹;重復上述步驟,直到只剩一棵二叉樹為止。Huffman樹的儲蓄結(jié)構(gòu)以下:structunsignedintweight;unsignedintparent,lchild,rchild;HTNode,*HuffmanTree;實現(xiàn)方案方案描繪:本方案采納C#語言實現(xiàn)數(shù)據(jù)的Hufman編碼與解碼實現(xiàn)代碼:主要實現(xiàn)代碼以下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Dat

14、a;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections.Specialized;namespaceHuffmanCodepublicpartialclassForm1:FormclassNodepubliccharcode;publicuintprioirry;publicNodelchild;publicNoderchild;publicForm1()InitializeComponent();privateDictionarydictcode=newDictionary

15、();privateNodehuffTree;privateintcomparisonNode(Noden1,Noden2)return(int)(n1.prioirry-n2.prioirry);privatestringencode(stringstr)dictcode.Clear();huffTree=null;if(string.IsNullOrEmpty(str)return;DictionarypriorityQueue=newDictionary();for(inti=0;istr.Length;i+)if(priorityQueue.ContainsKey(stri)prior

16、ityQueuestri+;elsepriorityQueue.Add(stri,1);Listlistpc=newList();foreach(variteminpriorityQueue)listpc.Add(newNode()prioirry=item.Value,lchild=);null,rchild=null,code=item.Keylistpc.Sort(comparisonNode);while(listpc.Count1)Noden=newNode();n.prioirry=listpc0.prioirry+listpc1.prioirry;n.lchild=listpc0

17、;n.rchild=listpc1;listpc.RemoveAt(0);listpc.RemoveAt(0);intindex=-1;for(inti=0;ilistpc.Count;i+)if(n.prioirry=listpci.prioirry)index=i;break;if(index=-1)index=listpc.Count;listpc.Insert(index,n);stringencodestr=;viewTree(listpc0,);huffTree=listpc0;for(inti=0;istr.Length;i+)encodestr+=dictcodestri;re

18、turnencodestr;privatevoidviewTree(Noden,stringv)if(n.code!=0)dictcode.Add(n.code,v);elseif(n.lchild!=null)stringvl=v+0;viewTree(n.lchild,vl);if(n.rchild!=null)stringvr=v+1;viewTree(n.rchild,vr);privatestringdecode(stringstr)Noderoot=huffTree;stringresult=;for(inti=0;istr.Length;i+)if(root.code!=0)result+=root.code.ToString();root=huffTree;if(stri=0)root=root.lchild;elseroot=root.rchild;if(root.code!=0)result+=root.code.ToString();returnresult;privatevoidbutton1_Click_1(objectsender,EventArgse)textBox2.Text=encode(textBox1.Text);privatevoidbut

溫馨提示

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

評論

0/150

提交評論