c++哈夫曼编码与译码

c++哈夫曼编码与译码

ID:11434239

大小:40.00 KB

页数:6页

时间:2018-07-12

c++哈夫曼编码与译码_第1页
c++哈夫曼编码与译码_第2页
c++哈夫曼编码与译码_第3页
c++哈夫曼编码与译码_第4页
c++哈夫曼编码与译码_第5页
资源描述:

《c++哈夫曼编码与译码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include//系统自带的字符串库函数usingnamespacestd;structNode{chardata;//节点数据域为字符型Node*next;Node(){next=NULL;};Node(charitem,Node*link=NULL){data=item;next=link;};};classLinkList{//仅保留几个用得到的成员函数protected:Node*head;Node*curPtr;intcount,curPosition;Node*

2、GetElemPtr(intposition);//返回指向第position个结点的指针public:LinkList();intLength()const;boolEmpty()const;voidTraverse();voidInsert(intposition,constchar&e);charGetElem(intposition);};Node*LinkList::GetElemPtr(intposition){if(curPosition>position){curPosition=0;curPtr=head;}

3、for(;curPositionnext;returncurPtr;}charLinkList::GetElem(intposition){Node*tmpPtr;tmpPtr=GetElemPtr(position);chare=tmpPtr->data;returne;}LinkList::LinkList(){head=newNode;//构造头指针,带表头结点的链表curPtr=head;curPosition=0;count=0;}intL

4、inkList::Length()const{returncount;}boolLinkList::Empty()const{returnhead->next==NULL;}voidLinkList::Traverse(){for(Node*tmpPtr=head->next;tmpPtr!=NULL;tmpPtr=tmpPtr->next){cout<<(tmpPtr->data);}}voidLinkList::Insert(intposition,constchar&e){Node*tmpPtr;tmpPtr=GetEl

5、emPtr(position-1);Node*newPtr;newPtr=newNode(e,tmpPtr->next);tmpPtr->next=newPtr;curPosition=position;curPtr=newPtr;count++;}//哈夫曼树结点类structHuffmanTreeNode{intweight;unsignedintparent,leftChild,rightChild;//双亲,左右孩子域HuffmanTreeNode();HuffmanTreeNode(intw,intp=0,intlC

6、hild=0,intrChild=0);};HuffmanTreeNode::HuffmanTreeNode(){parent=leftChild=rightChild=0;}HuffmanTreeNode::HuffmanTreeNode(intw,intp,intlChild,intrChild)//右孩子{weight=w;//权parent=p;//双亲leftChild=lChild;//左孩子rightChild=rChild;//右孩子}classHuffmanTree{protected://HuffmanTr

7、eeNode*nodes;//存储结点信息,nodes[0]未用char*LeafChars;//叶结点字符信息,LeafChars[0]未用string*LeafCharCodes;//叶结点字符编码信息,LeafCharCodes[0]未用intcurPos;//译码时从根结点到叶结点路径的当前结点intnum;//叶结点个数//辅助函数:voidSelect(intcur,int&r1,int&r2);//nodes[1~cur]中选择双亲为0,权值最小的两个结点r1,r2voidCreatHuffmanTree(cha

8、rch[],intw[],intn);public:HuffmanTree(charch[],intw[],intn);//由字符,权值和字符个数构造哈夫曼树virtual~HuffmanTree();//析构函数stringEncode(charch);//编码LinkLi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。