版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——上海交大數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告上海交大--數(shù)據(jù)結(jié)構(gòu)-試驗(yàn)報(bào)告
————————————————————————————————:
————————————————————————————————日期:
《數(shù)據(jù)結(jié)構(gòu)》試驗(yàn)報(bào)告
說(shuō)明:本軟件在win764位系統(tǒng)測(cè)試通過(guò),需要安裝.net3.5以上版本
七、數(shù)制轉(zhuǎn)換問(wèn)題
1.問(wèn)題描述
對(duì)于輸入的任意一個(gè)非負(fù)十進(jìn)制整數(shù),輸出與其等值的其他進(jìn)制數(shù)(二進(jìn)制、八進(jìn)制或十六進(jìn)制)。
2.任務(wù)要求
⑴建立模型,確定存儲(chǔ)結(jié)構(gòu);
⑵對(duì)任意十進(jìn)制數(shù),實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換問(wèn)題。
3.試驗(yàn)指導(dǎo)
(1)試驗(yàn)類(lèi)型:
設(shè)計(jì)試驗(yàn)。本試驗(yàn)要求同學(xué)們針對(duì)“數(shù)制轉(zhuǎn)換〞這個(gè)經(jīng)典的問(wèn)題,應(yīng)用棧的存儲(chǔ)結(jié)構(gòu),自己設(shè)計(jì)一個(gè)方案,并上機(jī)實(shí)現(xiàn)。此試驗(yàn)的目的是培養(yǎng)學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單應(yīng)用能力。
(2)預(yù)備知識(shí):
棧的基本定義、棧的基本操作算法、棧的存儲(chǔ)結(jié)構(gòu)。
(3)實(shí)現(xiàn)方法提醒:
1)以十進(jìn)制轉(zhuǎn)換為八進(jìn)制為例。將十進(jìn)制數(shù)整除8,計(jì)算過(guò)程中得到的余數(shù)依次進(jìn)棧,按出棧序列輸出棧中的內(nèi)容即為與輸入的十進(jìn)制數(shù)對(duì)應(yīng)的八進(jìn)制數(shù)。設(shè)Conversion函數(shù)執(zhí)行數(shù)制轉(zhuǎn)換的操作,對(duì)(1348)10轉(zhuǎn)換為8進(jìn)制的過(guò)程如下:
N
Ndiv8
Nmod8
1348
168
4
168
21
0
21
2
5
2
0
2
2)設(shè)計(jì)數(shù)制轉(zhuǎn)換的算法。
4.實(shí)現(xiàn)方案
方案描述:
本方案采用C#語(yǔ)言實(shí)現(xiàn),實(shí)現(xiàn)十進(jìn)制與其他進(jìn)制直接的轉(zhuǎn)換
實(shí)現(xiàn)代碼:
主要實(shí)現(xiàn)代碼如下
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace進(jìn)制轉(zhuǎn)換器
{
publicpartialclassMainFrm:Form
{
publicMainFrm()
{
InitializeComponent();
}
privat(yī)evoidMainFrm_Load_1(objectsender,EventArgse)
{
txtStart.Focus();
}
///summary>
///十進(jìn)制轉(zhuǎn)換為八進(jìn)制
////summary>
///pa=sender"</param
///paramname="e>/param
privatevoidradio_dto_Click_1(objectsender,EventArgse)
{
txtEnd.Text=";
if(txtStart.Text.Length!=0)
{
//TO(shè)DO:十進(jìn)制轉(zhuǎn)為八進(jìn)制。
Int32i;
try
{
i=Convert.ToInt32(txtStart.Text.Trim());
lblTitle.Text=十進(jìn)制轉(zhuǎn)為八進(jìn)制";
txtEnd.Text=Convert.ToString(i,8);
}
cat(yī)ch
{
MessageBox.Show("請(qǐng)輸入合法的十進(jìn)制數(shù),提醒,MessageBoxB(niǎo)uttons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請(qǐng)?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,"提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///<summary
///十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
///</summary
///<paramname=sender</param>
///<paramname="e"/param
privat(yī)evoidradio_dth_Click(objectsender,EventArgse)
{
txtEnd.Text=;
if(txtStart.Text.Length!=0)
{
//TO(shè)DO:十進(jìn)制轉(zhuǎn)換為十六進(jìn)制。
Int32i;
try
{
i=Convert.ToInt32(txtStart.Text.Trim());
lblTitle.Text=十進(jìn)制轉(zhuǎn)換為十六進(jìn)制;
txtEnd.Text=Convert.ToString(i,16);
}
catch
{
MessageBox.Show("請(qǐng)輸入合法的十進(jìn)制數(shù),提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show("請(qǐng)?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary>
///十進(jìn)制轉(zhuǎn)換為二進(jìn)制
////summary
///<paramname=sender/param
///<paramname="e/param
privat(yī)evoidradio_dtb_Click(objectsender,EventArgse)
{
txtEnd.Text=;
if(txtStart.Text.Length!=0)
{
//TODO:十進(jìn)制轉(zhuǎn)換為二進(jìn)制。
Int32i;
try
{
i=Convert.ToInt32(txtStart.Text.Trim());
lblTitle.Text="十進(jìn)制轉(zhuǎn)換為二進(jìn)制;
txtEnd.Text=Convert.ToString(i,2);
}
cat(yī)ch
{
MessageBox.Show("請(qǐng)輸入合法的十進(jìn)制數(shù),提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請(qǐng)?zhí)峁┺D(zhuǎn)換數(shù)據(jù)!,"提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary>
///八進(jìn)制到十進(jìn)制
////summary
///<paramname=sender/param>
///paramname=e></param
privatevoidradio_otd_Click(objectsender,EventArgse)
{
txtEnd.Text=;
if(txtStart.Text.Length!=0)
{
//TO(shè)DO:八進(jìn)制到十進(jìn)制。
try
{
lblTitle.Text="八進(jìn)制到十進(jìn)制;
txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text.Trim(),8));//八進(jìn)制轉(zhuǎn)為十進(jìn)制
}
catch
{
MessageBox.Show(請(qǐng)?zhí)峁┖戏ǖ陌诉M(jìn)制數(shù),提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請(qǐng)?zhí)峁┺D(zhuǎn)換數(shù)據(jù)?。?提醒,MessageBoxB(niǎo)uttons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary
///十六進(jìn)制到十進(jìn)制
////summary>
///<paramname=sender/param
///paramname="e"/param
privatevoidradio_htd_Click(objectsender,EventArgse)
{
txtEnd.Text=";
if(txtStart.Text.Length!=0)
{
try
{
//TODO:十六進(jìn)制到十進(jìn)制。
lblTitle.Text="十六進(jìn)制到十進(jìn)制;
txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text,16));
}
catch
{
MessageBox.Show(請(qǐng)?zhí)峁┖戏ǖ氖M(jìn)制數(shù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請(qǐng)?zhí)峁┺D(zhuǎn)換數(shù)據(jù)?。?提醒,MessageBoxB(niǎo)uttons.OK,MessageBoxIcon.Warning);
}
txtStart.Focus();
}
///summary>
///二進(jìn)制到十進(jìn)制
////summary
///=sender</param
///paramname=e"/param
privatevoidradio_btd_Click(objectsender,EventArgse)
{
txtEnd.Text=";
if(txtStart.Text.Length!=0)
{
try
{
//TODO:二進(jìn)制到十進(jìn)制。
lblTitle.Text=二進(jìn)制到十進(jìn)制;
txtEnd.Text=Convert.ToString(Convert.ToInt32(txtStart.Text,2));
}
cat(yī)ch
{
MessageBox.Show(請(qǐng)?zhí)峁┖戏ǖ亩M(jìn)制數(shù)!,提醒,MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show(請(qǐng)?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();
}
}
}
測(cè)試過(guò)程:
不輸入數(shù)據(jù),軟件會(huì)溫馨提醒
2.輸入數(shù)據(jù)選擇轉(zhuǎn)換模式
3.測(cè)試完成,結(jié)果正確
十四、Huffman編碼
1.問(wèn)題描述
設(shè)某編碼系統(tǒng)共有個(gè)字符,使用頻率分別為,設(shè)計(jì)一個(gè)不等長(zhǎng)的編碼方案,輸出每個(gè)字符對(duì)應(yīng)的編碼,使得該編碼系統(tǒng)的空間效率最好。
2.任務(wù)要求
⑴把握Huffman樹(shù)的概念、特點(diǎn)和存儲(chǔ)結(jié)構(gòu);
⑵把握Huffman樹(shù)的構(gòu)造算法;
⑶運(yùn)用Huffman樹(shù)解決編碼問(wèn)題。
3.試驗(yàn)指導(dǎo)
(1)試驗(yàn)類(lèi)型:
設(shè)計(jì)試驗(yàn)。本試驗(yàn)要求同學(xué)們針對(duì)“Huffman樹(shù)〞這個(gè)經(jīng)典的問(wèn)題,應(yīng)用二叉樹(shù)這種數(shù)據(jù)結(jié)構(gòu),自己設(shè)計(jì)一個(gè)解決方案,并上機(jī)實(shí)現(xiàn)。此試驗(yàn)?zāi)康氖桥囵B(yǎng)學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單應(yīng)用能力。
(2)預(yù)備知識(shí):
二叉樹(shù)的定義、二叉樹(shù)的基本操作算法。
(3)實(shí)現(xiàn)方法提醒:
1)以字符出現(xiàn)的次數(shù)為權(quán)值,個(gè)結(jié)點(diǎn)作為根結(jié)點(diǎn)分別構(gòu)成棵二叉樹(shù);
2)所有二叉樹(shù)中選取兩棵根結(jié)點(diǎn)權(quán)值最小的樹(shù)作為左右子樹(shù)構(gòu)造一棵新二叉樹(shù),新二叉樹(shù)根結(jié)點(diǎn)的權(quán)值為左右子樹(shù)上根結(jié)點(diǎn)的權(quán)值之和,并刪除原先的兩棵二叉樹(shù);
3)重復(fù)上述步驟,直到只剩一棵二叉樹(shù)為止。
4)Huffman樹(shù)的存儲(chǔ)結(jié)構(gòu)如下:
struct{
unsignedintweight;
unsignedintparent,lchild,rchild;
}HTNode,*HuffmanTree;
4.實(shí)現(xiàn)方案
方案描述:
本方案采用C#語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)的Huffman編碼與解碼
實(shí)現(xiàn)代碼:
主要實(shí)現(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(cuò);
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(cuò)(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購(gòu)基金服務(wù)合同
- 九年級(jí)道德與法治下冊(cè) 第二單元 世界舞臺(tái)上的中國(guó) 第四課 與世界共發(fā)展 第一框 中國(guó)的機(jī)遇與挑戰(zhàn)教案 新人教版
- 二年級(jí)品德與生活下冊(cè) 大自然中的伙伴教案 遼海版
- 安徽省滁州二中九年級(jí)體育 第21次課教案
- 2024年秋七年級(jí)英語(yǔ)上冊(cè) Unit 1 This is me Grammar教案 (新版)牛津版
- 2024秋八年級(jí)物理上冊(cè) 第1章 機(jī)械運(yùn)動(dòng) 第3節(jié) 運(yùn)動(dòng)的快慢教案(新版)新人教版
- 2023六年級(jí)英語(yǔ)上冊(cè) Unit 11 Shall we go to the theatre說(shuō)課稿 湘少版
- 廚房管理規(guī)章制度
- 租賃交通標(biāo)志合同范本(2篇)
- 屈原 節(jié)選 課件
- 凈化車(chē)間施工組織方案
- 作文考試專(zhuān)用稿紙_(A3完美打印版)
- 二等水準(zhǔn)測(cè)量計(jì)算表
- 消防控制室記錄表
- 小學(xué)三年級(jí)下冊(cè)道德與法治課件-8.大家的朋友-部編版(15張)課件
- 南昌市南京路醫(yī)藥谷工程勘察報(bào)告資料
- TAPP手術(shù)技巧精品課件講座
- 信貸A初級(jí)題庫(kù)(判斷、單選題、多選題)
- 金屬材料的彈性變形與塑性變形
- 不銹鋼面板吊頂施工工藝(詳細(xì))
- 使用INSITE刷寫(xiě)ECM標(biāo)定操作指導(dǎo)PPT課件
評(píng)論
0/150
提交評(píng)論