版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据结构》实验报告说明:本软件在win764位系统测试通过,需要安装.net3.5以上版本七、数制转换问题1.问题描述对于输入的任意一个非负十进制整数,输出与其等值的其他进制数(二进制、八进制或十六进制)。2.任务规定⑴建立模型,拟定存储结构;⑵对任意十进制数,实现进制转换问题。3.实验指导(1)实验类型:设计实验。本实验规定同学们针对“数制转换”这个经典的问题,应用栈的存储结构,自己设计一个方案,并上机实现。此实验的目的是培养学生对数据结构的简朴应用能力。(2)预备知识:栈的基本定义、栈的基本操作算法、栈的存储结构。(3)实现方法提醒:1)以十进制转换为八进制为例。将十进制数整除8,计算过程中得到的余数依次进栈,按出栈序列输出栈中的内容即为与输入的十进制数相应的八进制数。设Conversion函数执行数制转换的操作,对(1348)10转换为8进制的过程如下:NNdiv8Nmod81348168416821021252022)设计数制转换的算法。4.实现方案方案描述:本方案采用C#语言实现,实现十进制与其他进制直接的转换实现代码:重要实现代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespace进制转换器{publicpartialclassMainFrm:Form{publicMainFrm(){InitializeComponent();}privatevoidMainFrm_Load_1(objectsender,EventArgse){txtStart.Focus();}///<summary>///十进制转换为八进制///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidradio_dto_Click_1(objectsender,EventArgse){txtEnd.Text="";if(txtStart.Text.Length!=0){//TODO:十进制转为八进制。Int32i;try{i=Convert.ToInt32(txtStart.Text.Trim());lblTitle.Text="十进制转为八进制";txtEnd.Text=Convert.ToString(i,8);}catch{MessageBox.Show("请输入合法的十进制数","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{MessageBox.Show("请提供转换数据!","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}txtStart.Focus();}///<summary>///十进制转换为十六进制///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidradio_dth_Click(objectsender,EventArgse){txtEnd.Text="";if(txtStart.Text.Length!=0){//TODO:十进制转换为十六进制。Int32i;try{i=Convert.ToInt32(txtStart.Text.Trim());lblTitle.Text="十进制转换为十六进制";txtEnd.Text=Convert.ToString(i,16);}catch{MessageBox.Show("请输入合法的十进制数","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{MessageBox.Show("请提供转换数据!","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}txtStart.Focus();}///<summary>///十进制转换为二进制///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidradio_dtb_Click(objectsender,EventArgse){txtEnd.Text="";if(txtStart.Text.Length!=0){//TODO:十进制转换为二进制。Int32i;try{i=Convert.ToInt32(txtStart.Text.Trim());lblTitle.Text="十进制转换为二进制";txtEnd.Text=Convert.ToString(i,2);}catch{MessageBox.Show("请输入合法的十进制数","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{MessageBox.Show("请提供转换数据!","提醒",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));//八进制转为十进制}catch{MessageBox.Show("请提供合法的八进制数","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{MessageBox.Show("请提供转换数据!","提醒",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("请提供合法的十六进制数!","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{MessageBox.Show("请提供转换数据!","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}txtStart.Focus();}///<summary>///二进制到十进制///</summary>///<paramname="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));}catch{MessageBox.Show("请提供合法的二进制数!","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{MessageBox.Show("请提供转换数据!","提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning);}txtStart.Focus();}privatevoidreset_Click(objectsender,EventArgse){txtStart.Text="";txtEnd.Text="";txtStart.Focus();}privatevoidclose_Click(objectsender,EventArgse){this.Close();}}}测试过程:不输入数据,软件会温馨提醒2.输入数据选择转换模式3.测试完毕,结果对的十四、Huffman编码1.问题描述设某编码系统共有个字符,使用频率分别为,设计一个不等长的编码方案,输出每个字符相应的编码,使得该编码系统的空间效率最佳。2.任务规定⑴掌握Huffman树的概念、特点和存储结构;⑵掌握Huffman树的构造算法;⑶运用Huffman树解决编码问题。3.实验指导(1)实验类型:设计实验。本实验规定同学们针对“Huffman树”这个经典的问题,应用二叉树这种数据结构,自己设计一个解决方案,并上机实现。此实验目的是培养学生对数据结构的简朴应用能力。(2)预备知识:二叉树的定义、二叉树的基本操作算法。(3)实现方法提醒:1)以字符出现的次数为权值,个结点作为根结点分别构成棵二叉树;2)所有二叉树中选取两棵根结点权值最小的树作为左右子树构造一棵新二叉树,新二叉树根结点的权值为左右子树上根结点的权值之和,并删除原先的两棵二叉树;3)反复上述环节,直到只剩一棵二叉树为止。4)Huffman树的存储结构如下:struct{unsignedintweight;unsignedintparent,lchild,rchild;}HTNode,*HuffmanTree;4.实现方案方案描述:本方案采用C#语言实现数据的Huffman编码与解码实现代码:重要实现代码如下: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();}privateDictionary<char,string>dictcode=newDictionary<char,string>();privateNodehuffTree;privateintcomparisonNode(Noden1,Noden2){return(int)(n1.prioirry-n2.prioirry);}privatestringencode(stringstr){dictcode.Clear();huffTree=null;if(string.IsNullOrEmpty(str)){return"";}Dictionary<char,uint>priorityQueue=newDictionary<char,uint>();for(inti=0;i<str.Length;i++){if(priorityQueue.ContainsKey(str[i])){priorityQueue[str[i]]++;}else{priorityQueue.Add(str[i],1);}}List<Node>listpc=newList<Node>();foreach(variteminpriorityQueue){listpc.Add(newNode(){prioirry=item.Value,lchild=null,rchild=null,code=item.Key});}listpc.Sort(comparisonNode);while(listpc.Count>1){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;i<listpc.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;i<str.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=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 液化气体生产工安全知识宣贯知识考核试卷含答案
- 生活垃圾焚烧操作工冲突解决竞赛考核试卷含答案
- 白酒灌装工10S考核试卷含答案
- 压延玻璃成型工QC管理知识考核试卷含答案
- 保险公估人班组安全测试考核试卷含答案
- 汽车零部件再制造装调工达标知识考核试卷含答案
- 急诊护理与患者家属沟通
- 外科护理伦理与职业素养
- 莱州湾东岸海水入侵的数值模拟与风险评价:基于多模型与多因素分析
- 药用菌桑黄黄酮代谢调控机制与优化策略研究
- 数控车床装配流程及工艺标准说明
- 电力线路巡检报告模板
- DB22∕T 1056-2022 梅花鹿产品初加工技术规程
- 足球一对一防守课件教学
- 人力资源管理信息系统介绍
- 2026中国中医药服务贸易发展路径研究报告
- 多发性共患糖尿病疾病修正治疗(DMT)方案
- 2025年人工智能在航运业的应用
- 艺术思维创意课教案
- 剪刀车专项施工方案
- 2025版《煤矿安全规程》解读
评论
0/150
提交评论