版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——上海交大數(shù)據(jù)結(jié)構實驗報告上海交大--數(shù)據(jù)結(jié)構-試驗報告
————————————————————————————————:
————————————————————————————————日期:
《數(shù)據(jù)結(jié)構》試驗報告
說明:本軟件在win764位系統(tǒng)測試通過,需要安裝.net3.5以上版本
七、數(shù)制轉(zhuǎn)換問題
1.問題描述
對于輸入的任意一個非負十進制整數(shù),輸出與其等值的其他進制數(shù)(二進制、八進制或十六進制)。
2.任務要求
⑴建立模型,確定存儲結(jié)構;
⑵對任意十進制數(shù),實現(xiàn)進制轉(zhuǎn)換問題。
3.試驗指導
(1)試驗類型:
設計試驗。本試驗要求同學們針對“數(shù)制轉(zhuǎn)換〞這個經(jīng)典的問題,應用棧的存儲結(jié)構,自己設計一個方案,并上機實現(xiàn)。此試驗的目的是培養(yǎng)學生對數(shù)據(jù)結(jié)構的簡單應用能力。
(2)預備知識:
棧的基本定義、棧的基本操作算法、棧的存儲結(jié)構。
(3)實現(xiàn)方法提醒:
1)以十進制轉(zhuǎn)換為八進制為例。將十進制數(shù)整除8,計算過程中得到的余數(shù)依次進棧,按出棧序列輸出棧中的內(nèi)容即為與輸入的十進制數(shù)對應的八進制數(shù)。設Conversion函數(shù)執(zhí)行數(shù)制轉(zhuǎn)換的操作,對(1348)10轉(zhuǎn)換為8進制的過程如下:
N
Ndiv8
Nmod8
1348
168
4
168
21
0
21
2
5
2
0
2
2)設計數(shù)制轉(zhuǎn)換的算法。
4.實現(xiàn)方案
方案描述:
本方案采用C#語言實現(xiàn),實現(xiàn)十進制與其他進制直接的轉(zhuǎn)換
實現(xiàn)代碼:
主要實現(xiàn)代碼如下
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace進制轉(zhuǎn)換器
{
publicpartialclassMainFrm:Form
{
publicMainFrm()
{
InitializeComponent();
}
privat(yī)evoidMainFrm_Load_1(objectsender,EventArgse)
{
txtStart.Focus();
}
///summary>
///十進制轉(zhuǎn)換為八進制
////summary>
///pa=sender"</param
///paramname="e>/param
privatevoidradio_dto_Click_1(objectsender,EventArgse)
{
txtEnd.Text=";
if(txtStart.Text.Length!=0)
{
//TODO:十進制轉(zhuǎn)為八進制。
Int32i;
try
{
i=Convert.ToInt32(txtStart.Text.Trim());
lblTitle.Text=十進制轉(zhuǎn)為八進制";
txtEnd.Text=Convert.ToString(i,8);
}
cat(yī)ch
{
MessageBox.Show("請輸入合法的十進制數(shù),提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,"提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///<summary
///十進制轉(zhuǎn)換為十六進制
///</summary
///<paramname=sender</param>
///<paramname="e"/param
privat(yī)evoidradio_dth_Click(objectsender,EventArgse)
{
txtEnd.Text=;
if(txtStart.Text.Length!=0)
{
//TODO:十進制轉(zhuǎn)換為十六進制。
Int32i;
try
{
i=Convert.ToInt32(txtStart.Text.Trim());
lblTitle.Text=十進制轉(zhuǎn)換為十六進制;
txtEnd.Text=Convert.ToString(i,16);
}
catch
{
MessageBox.Show("請輸入合法的十進制數(shù),提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show("請?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary>
///十進制轉(zhuǎn)換為二進制
////summary
///<paramname=sender/param
///<paramname="e/param
privat(yī)evoidradio_dtb_Click(objectsender,EventArgse)
{
txtEnd.Text=;
if(txtStart.Text.Length!=0)
{
//TODO:十進制轉(zhuǎn)換為二進制。
Int32i;
try
{
i=Convert.ToInt32(txtStart.Text.Trim());
lblTitle.Text="十進制轉(zhuǎn)換為二進制;
txtEnd.Text=Convert.ToString(i,2);
}
cat(yī)ch
{
MessageBox.Show("請輸入合法的十進制數(shù),提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,"提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary>
///八進制到十進制
////summary
///<paramname=sender/param>
///paramname=e></param
privatevoidradio_otd_Click(objectsender,EventArgse)
{
txtEnd.Text=;
if(txtStart.Text.Length!=0)
{
//TODO:八進制到十進制。
try
{
lblTitle.Text="八進制到十進制;
txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text.Trim(),8));//八進制轉(zhuǎn)為十進制
}
catch
{
MessageBox.Show(請?zhí)峁┖戏ǖ陌诉M制數(shù),提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請?zhí)峁┺D(zhuǎn)換數(shù)據(jù)?。?提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary
///十六進制到十進制
////summary>
///<paramname=sender/param
///paramname="e"/param
privatevoidradio_htd_Click(objectsender,EventArgse)
{
txtEnd.Text=";
if(txtStart.Text.Length!=0)
{
try
{
//TODO:十六進制到十進制。
lblTitle.Text="十六進制到十進制;
txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text,16));
}
catch
{
MessageBox.Show(請?zhí)峁┖戏ǖ氖M制數(shù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請?zhí)峁┺D(zhuǎn)換數(shù)據(jù)?。?提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary>
///二進制到十進制
////summary
///=sender</param
///paramname=e"/param
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));
}
cat(yī)ch
{
MessageBox.Show(請?zhí)峁┖戏ǖ亩M制數(shù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
privat(yī)evoidreset_Click(objectsender,EventArgse)
{
txtStart.Text=;
txtEnd.Text=;
txtStart.Focus();
}
privatevoidclose_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
測試過程:
不輸入數(shù)據(jù),軟件會溫馨提醒
2.輸入數(shù)據(jù)選擇轉(zhuǎn)換模式
3.測試完成,結(jié)果正確
十四、Huffman編碼
1.問題描述
設某編碼系統(tǒng)共有個字符,使用頻率分別為,設計一個不等長的編碼方案,輸出每個字符對應的編碼,使得該編碼系統(tǒng)的空間效率最好。
2.任務要求
⑴把握Huffman樹的概念、特點和存儲結(jié)構;
⑵把握Huffman樹的構造算法;
⑶運用Huffman樹解決編碼問題。
3.試驗指導
(1)試驗類型:
設計試驗。本試驗要求同學們針對“Huffman樹〞這個經(jīng)典的問題,應用二叉樹這種數(shù)據(jù)結(jié)構,自己設計一個解決方案,并上機實現(xiàn)。此試驗目的是培養(yǎng)學生對數(shù)據(jù)結(jié)構的簡單應用能力。
(2)預備知識:
二叉樹的定義、二叉樹的基本操作算法。
(3)實現(xiàn)方法提醒:
1)以字符出現(xiàn)的次數(shù)為權值,個結(jié)點作為根結(jié)點分別構成棵二叉樹;
2)所有二叉樹中選取兩棵根結(jié)點權值最小的樹作為左右子樹構造一棵新二叉樹,新二叉樹根結(jié)點的權值為左右子樹上根結(jié)點的權值之和,并刪除原先的兩棵二叉樹;
3)重復上述步驟,直到只剩一棵二叉樹為止。
4)Huffman樹的存儲結(jié)構如下:
struct{
unsignedintweight;
unsignedintparent,lchild,rchild;
}HTNode,*HuffmanTree;
4.實現(xiàn)方案
方案描述:
本方案采用C#語言實現(xiàn)數(shù)據(jù)的Huffman編碼與解碼
實現(xiàn)代碼:
主要實現(xiàn)代碼如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Collections.Specialized;
namespaceHuffmanCode
{
publicpartialclassForm1:Form
{
classNode
{
publiccharcode;
publicuintprioirry;
publicNodelchild;
publicNoderchild;
}
publicForm1()
{
InitializeComponent();
}
privateDictionarychar,stringdictcode=newDictionary<char,string();
privateNodehuffTree;
privateintcomparisonNode(Noden1,Noden2)
{
return(int)(n1.prioirry-n2.prioirry);
}
privatestringencode(stringstr)
{
dictcode.Clear();
huffTree=null;
if(string.IsNullOrEmpty(str))
{
return;
}
Dictionarychar,uintpriorityQueue=newDictionarychar,uint();
for(inti=0;istr.Length;i++)
{
if(priorityQueue.ContainsKey(str[i]))
{
priorityQueue[str[i]]++;
}
else
{
priorityQueue.Add(str[i],1);
}
}
List<Nodelistpc=newListNode();
foreach(variteminpriorityQueue)
{
listpc.Add(newNode()
{
prioirry=item.Value,lchild=null,rchild=null,code=item.Key
});
}
listpc.Sort(comparisonNode);
while(listpc.Count1)
{
Noden=newNode();
n.prioirry=listpc[0].prioirry+listpc[1].prioirry;
n.lchild=listpc[0];
n.rchild=listpc[1];
listpc.RemoveAt(0);
listpc.RemoveAt(0);
intindex=-1;
for(inti=0;ilistpc.Count;i++)
{
if(n.prioirry=listpc[i].prioirry)
{
index=i;
break;
}
}
if(index==-1)
{
index=listpc.Count;
}
listpc.Insert(index,n);
}
stringencodestr=";
viewTree(listpc[0],);
huffTree=listpc[0];
for(inti=0;istr.Length;i++)
{
encodestr+=dictcode[str[i]];
}
returnencodestr;
}
privatevoidviewTree(Noden,stringv)
{
if(n.code!='\0)
{
dictcode.Add(n.code,v);
}
else
{
if(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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)用工免責合同范例
- 私人買賣地合同范例
- 銅仁幼兒師范高等??茖W?!兜胤搅⒎▽嵱枴?023-2024學年第一學期期末試卷
- 完整版100以內(nèi)加減法混合運算4000道131
- 銅陵學院《計算機網(wǎng)絡基礎4》2023-2024學年第一學期期末試卷
- 鐵門關職業(yè)技術學院《計算機網(wǎng)絡與通信》2023-2024學年第一學期期末試卷
- 小學數(shù)學二年級第二學期口算計算共5082道題
- 小學數(shù)學二年級第二學期口算計算共5092道題
- 小學數(shù)學二年級第二學期口算計算共5158道題
- 天門職業(yè)學院《平面構成》2023-2024學年第一學期期末試卷
- 安全帶管理登記臺帳
- GB 16847-1997保護用電流互感器暫態(tài)特性技術要求
- 裝飾裝修施工質(zhì)量檢查評分表
- 超圖軟件三維平臺技術參數(shù)v7c2015r
- 《思想道德與法治》 課件 第四章 明確價值要求 踐行價值準則
- 幼兒園講座:課程游戲化、生活化建設的背景與目的課件
- 湖南省高等教育自學考試 畢業(yè)生登記表
- 地理信息系統(tǒng)(GIS)公開課(課堂)課件
- 電氣照明設備相關知識課件
- 婦產(chǎn)科護理學理論知識考核題庫與答案
- 漢字文化精品課件
評論
0/150
提交評論