ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:22.29KB ,
资源ID:16900304      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16900304.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(级《数据结构》课程设计题目A210 陈建华 53090119Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

级《数据结构》课程设计题目A210 陈建华 53090119Word文档下载推荐.docx

1、文本文件自行选择,至少含3000个字符。数据结构课程设计报告姓名陈建华学号530901192009级1班6组实验室:计算机楼A209提交日期2010.8.24成绩指导教师题目三:问题解析:运用树和线性表的数据结构知识,设计huffman编码,建立一个栈,编码 从文件中读入任意一篇英文短文(文件为ASCII编码,扩展名为txt);统计并输出不同字符在文章中出现的频率(空格、换行、标点等也按字符处理);根据字符频率构造哈夫曼树,并给出每个字符的哈夫曼编码; 图形化输出哈夫曼树、哈夫曼编码;将文本文件利用哈夫曼树进行编码,存储成压缩文件(编码文件后缀名.huf)用哈夫曼编码来存储文件,并和输入文本文

2、件大小进行比较,计算文件压缩率;进行译码,将huf文件译码为ASCII编码的txt文件,与原txt文件进行比较数据结构选择、算法设计:本题采用了链表,树的数据结构。任务分工及进度计划:由陈建华同学完成编码和解码函数部分,由荣国东同学完成栈和队列的构造部分,由廖乐同学完成主函数,比较函数的调用方式。用户手册 用户输入file1.txt,当存在这个文件的时候,该程序可以将这个文件的字符(包括空格和换行)显示出来,并显示其个数,下一步,该程序希望用户建立一个文件(比如file2.txt),然后解码至file3.txt,将file1.txt和file.txt进行比较,核实是否相同。同时将file2.t

3、xt和file1.txt比较输出压缩率。,测试结果 根据题目要求的测试结果正确总结(对所作程序进行分析、评价运行效果,总结遇到的问题和解决办法)在利用数组的建立过程中,发现比较函数使用很不方便,(例如每次要减少2个节点并插入一个),利用C+中的class可以更好的解决这个问题。程序清单:#includefstreamstringmath.husing namespace std;ifstream infile1;/读原文件ofstream outfile2;ifstream infile2;/读压缩文件ofstream outfile3;ifstream infile3;/读解码后的文件ofs

4、tream outfile4;ifstream infile4;class BTNodepublic: char data; int flunt; string huff; BTNode*Left; BTNode*Right; BTNode(const char item,BTNode*Left1=NULL,BTNode*Right1=NULL):data(item),Left(Left1),Right(Right1),flunt(0) void SetLeft(BTNode*L)Left=L; void SetRight(BTNode*R)Right=R; BTNode* GetLeft()

5、return Left; BTNode* GetRight()return Right; void SetData(const int& item)data=item; char& GetData()return data; int& GetFlunt()return flunt; void SetFlunt(const int f)flunt=f;class SNode/*栈* BTNode* item; SNode* next; SNode(BTNode* t)item=t;next=NULL;class Stack SNode* top; Stack()top=NULL; void In

6、sert(BTNode* t); BTNode* Pop(); bool IsEmpty();bool Stack:IsEmpty() if(top=NULL) return true; else return false;void Stack:Insert(BTNode*t) SNode* p; p=new SNode(t); if(IsEmpty() top=p; p-next=top; top=p; BTNode* Stack:Pop() BTNode*p; SNode*q; if(top=NULL) coutitem; p=top- q=top; top=top-next; delet

7、e q; return p;Stack s;class LNodepublic:char ch;int count;bool flag;string huff;LNode* next;BTNode* root;LNode()next=NULL;LNode(char& ch1)ch=ch1;count=1;flag=0;root=NULL;class List LNode* head; LNode* current; int count; List()head=new LNode();count=0;current=head; void Insert(char& ch); void Delete

8、(); void SortInsert(LNode* pt); void Sort(); void BackSort();void List:Insert(char& ch) current-next=new LNode(ch); current=current-bool List: if(count=0) return 1; return 0;SortInsert(LNode* pt) LNode*p; LNode*p1; p1=head; p=head- while(p!=NULL&pt-countp-count)p1=p;p=p- if(p=NULL) p1-next=pt; pt-ne

9、xt=p; count+;Delete() head-next=p- count-;Sort() int min; LNode* p; LNode* q; LNode* p1; LNode* q1; LNode* temp; p=p1- while(p-next!=NULL) q1=p; q=p- while(q! if(q-count=q) temp=p- p1-next=q; p-next=q- q-next=temp; q1- q=p; p=p1- else q1=q; q=q- p1=p; p=p-BackSort()List l;List ListSearch;void transl

10、ate()/&translate& char c; while(c=infile1.get()!=EOF) p=(l.head); while(c!=p-ch&=NULL)p=p- if(p-next=NULL) if(c=p-ch)p-count=p-count+1; l.Insert(c);l.count=l.count+1; else p- l.Sort(); /*LNode*pp=new LNode(); pp-pp-ch=z; l.SortInsert(pp); l.Delete();*/ p=l.head-/ cout文件字符统计如下: coutchnext=new QNode(i

11、tem); rear=rear-BTNode *LinkQuene:OutQuene() QNode *p; p=front- BTNode *t=p-node; front- delete p; if(!front-next) rear=front; return t;int Tree:Height(BTNode *t)t)return 0; int hl,hr; hl=Height(t-GetLeft(); hr=Height(t-GetRight(); return hlhr?+hl:+hr;BTNode *Tree:Create(LNode *h)/&create tree& BTNo

12、de *p1=NULL,*p2=NULL; LNode *t1=NULL,*t2=NULL; BTNode *s;BTNode *root1; int t=l.count; while(l.count1) t1=h-t2=h-next- l.Delete();l.Delete(); if(t1-flag=0)&(t2-flag!=0) p1=new BTNode(0); p1-SetData(t1-ch);SetFlunt(t1-count);SetLeft(NULL);SetRight(NULL); p2=t2-root;=0)&flag=0) p2=new BTNode(0); p2-Se

13、tData(t2-SetFlunt(t2- p1=t1- s=new BTNode(0); s-SetFlunt(p1-GetFlunt()+p2-GetFlunt();SetLeft(p1);s-SetRight(p2);SetData(*); LNode *s1;s1=new LNode(); s1-count=p1-GetFlunt();flag=1;root=s; l.SortInsert(s1); root1=h- return root1;void BT(BTNode *a) if(a!a-GetData()huffvoid Code(BTNode* t)/*编码函数* stati

14、c string s= static int counter=0; if(t=NULL) s=s+0counter=counter+1; Code(t-counter=counter-1; s=s.erase(counter,1);1 t-huff=s;void Compress()/ p=root; if(p=NULL)return;=NULL|!s.IsEmpty()/遍历 while(p! s.Insert(p); p=p-GetLeft(); if(s.IsEmpty() return; p=s.Pop();GetLeft()=NULL&GetRight()=NULL) ListSearch.Insert(p-data); ListSearch.current-flunt;huff=p-huff;GetRight(); ListSearch.BackSort(); LNode* l;字符哈夫曼码检索表如下: l=ListSearch.head-/打印检索表 while(l!l-huf

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1