开发工具:
文件大小: 13kb
下载次数: 0
上传时间: 2009-12-03
详细说明: #include #include #include using namespace std; typedef struct HuffmanNode{//结点结构 int weight; int parent,lchild,rchild; }*HfmNode; struct HuffmanTree{//哈弗曼树 HfmNode Node; char *Info;//存储字符,也可放在结点结构里定义 int LeafNum;//叶结点数量 }; HuffmanTree T;//连接各模块变量 /****************初始化(建立哈夫曼树)函数********************/ void Initialization() //初始化 { int WeightNum; int i,j,pos1,pos2,max1,max2; // int choice; cout<>choice; /********************建树方案1 ************************************/ if(choice==1){ cout<<"输入字符个数:"; cin>>WeightNum; T.Node=new HuffmanNode[2*WeightNum-1]; //WeightNum权值对应的哈夫曼树中的结点总数为2*WeightNum-1个 T.Info=new char[2*WeightNum-1];//实际只需要申请WeightNum-1;但为了实现要求(5)所以所有结点都由字符域 for(i=0;i>T.Node[i].weight; //输入权值 T.Node[i].parent=-1; //为根结点 T.Node[i].lchild=-1; //无左孩子 T.Node[i].rchild=-1; //无右孩子 } } /***********************建树方案2*******************************************************/ else if(choice==2) { char ch, *st,*name; st=new char[128];//128为ASCII码总数 name=new char[20]; cout<<"请输入文档名称:";cin>>name; cout<>c;// tag if(c=='A'||c=='a') { string ch; cout<<"请输入测试数据(输入完毕按两次回车):"<>noskipws; while(infile1.get(ch)) { k++; //计算ToBeTran中正文长度,以便确定Tree的空间大小 } infile1.close(); Tree=new char[k+1]; ifstream infile2("ToBeTran.txt"); k=0; // infile2>>noskipws; while(infile2.get(ch)) { Tree[k]=ch; //读取文件内容,并存到Tree中 k++; } infile2.close(); Tree[k]='\0';//结束标志 cout<<"需编码内容为:"; cout<=0) //存储哈弗曼编码 { outfile<=0;n--) cout<>ch; switch(ch) { case'I': case'i':cout<<" 现在进行'初始化'操作:"<
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.