鱼C论坛

 找回密码
 立即注册
查看: 2483|回复: 2

[已解决]求助 这该怎么改才正确啊 哭了 帮帮孩子吧

[复制链接]
发表于 2020-11-8 11:28:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
知道了bug不知道怎么改
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. //哈夫曼树的存储
  5. typedef struct{
  6.         int weight;//结点的权值
  7.         int parent,lchild,rchild;//双亲、左右孩子
  8. }HTNode,*HuffmanTree;//动态分配数组存储哈夫曼树

  9. int min(HuffmanTree HT,int m)
  10. {
  11.         int i=0;
  12.         int min;
  13.         int min_weight;
  14.         while(HT[i].parent!=0)
  15.                 i++;
  16.         min_weight=HT[i].weight;
  17.         min=i;
  18.         for(i=1;i<m;i++)
  19.         {
  20.                 if(HT[i].weight<min_weight && HT[i].parent==0)
  21.                 {
  22.                         min_weight=HT[i].weight;
  23.                         min=i;
  24.                 }
  25.         }
  26.         HT[min].parent=1;
  27.         return min;
  28. }
  29. void Select(HuffmanTree HT,int m,int &s1,int &s2)
  30. {
  31.         int min1,min2;
  32.         min1=min(HT,m);
  33.         min2=min(HT,m);
  34. }

  35. void CreatHuffmanTree(HuffmanTree &HT,int n)
  36. {//构造哈夫曼树HT
  37.         if(n<=1) return;
  38.         int m = 2*n-1;
  39.         HT = new HTNode[m+1];
  40.         int s1,s2;
  41.         for(int i=1;i<=m;i++)
  42.         {
  43.                 HT[i].parent=0;
  44.                 HT[i].lchild=0;
  45.                 HT[i].rchild=0;
  46.         }
  47.         for(int j=1;j<=n;++j)
  48.                 cin>>HT[j].weight;
  49.         for(int k=n+1;k<=m;k++)
  50.         {
  51.                 Select(HT,k-1,s1,s2);
  52.                 HT[s1].parent=k;
  53.                 HT[s2].parent=k;
  54.                 HT[k].lchild=s1;
  55.                 HT[k].rchild=s2;
  56.                 HT[k].weight=HT[s1].weight+HT[s2].weight;
  57.         }
  58. }
  59. typedef char **HuffmanCode;//动态分配数组存储哈夫曼表
  60. void CreatHuffmanCode(HuffmanTree HT,HuffmanCode &HC,int n)
  61. {//从叶子到根逆向求每个字符的哈夫曼编码,存储在编码表HC中
  62.         HC=new char*[n+1];

  63.         char *cd=new char[n];
  64.         cd[n-1]='\0';
  65.         for(int i=1;i<=n;i++)
  66.         {        int c,f;
  67.                 int start=n-1;
  68.                 c=i;f=HT[i].parent;
  69.                 while(f!=0)
  70.                 {
  71.                         --start;
  72.                         if(HT[f].lchild==c)
  73.                                 cd[start]='0';
  74.                         else
  75.                                 cd[start]='1';
  76.                         c=f;
  77.                         f=HT[f].parent;
  78.                 }
  79.                 HC[i]=new char[n-start];
  80.                 strcpy(HC[i],&cd[start]);
  81.         }
  82.         delete cd;
  83. }
  84. int main()
  85. {
  86.         int n;
  87.         typedef char **HuffmanCode;

  88.         cout<<"请输入结点个数:"<<endl;
  89.         cin>>n;
  90.         HTNode *HuffmanTree=new HTNode[2*n-1];
  91.         int *weight=new int[n];
  92.         char **HC=new char*[n];

  93.         cout<<"请输入"<<n<<"个权值:";
  94.         CreatHuffmanTree(HuffmanTree,n);
  95.         CreatHuffmanCode(Huffmancode HC,n);
  96.         cout<<"输出哈夫曼编码:"<<endl;
  97.         return 0;
  98. }
  99.        
复制代码

报错:
D:\vc6.0\vc6.0 (2)\Huffman tree.cpp(100) : error C2065: 'Huffmancode' : undeclared identifier
D:\vc6.0\vc6.0 (2)\Huffman tree.cpp(100) : error C2146: syntax error : missing ')' before identifier 'HC'
D:\vc6.0\vc6.0 (2)\Huffman tree.cpp(100) : error C2059: syntax error : ')'
最佳答案
2020-11-8 11:35:12
本帖最后由 昨非 于 2020-11-8 11:38 编辑

下方第十四行的位置有语法错误

  1. int main()
  2. {
  3.         int n;
  4.         typedef char** HuffmanCode;

  5.         cout << "请输入结点个数:" << endl;
  6.         cin >> n;
  7.         HTNode* HuffmanTree = new HTNode[2 * n - 1];
  8.         int* weight = new int[n];
  9.         char** HC = new char* [n];

  10.         cout << "请输入" << n << "个权值:";
  11.         CreatHuffmanTree(HuffmanTree, n);
  12.         CreatHuffmanCode(HuffmanTree, HC, n); //这行不对

  13.         cout << "输出哈夫曼编码:" << endl;
  14.         return 0;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-8 11:35:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2020-11-8 11:38 编辑

下方第十四行的位置有语法错误

  1. int main()
  2. {
  3.         int n;
  4.         typedef char** HuffmanCode;

  5.         cout << "请输入结点个数:" << endl;
  6.         cin >> n;
  7.         HTNode* HuffmanTree = new HTNode[2 * n - 1];
  8.         int* weight = new int[n];
  9.         char** HC = new char* [n];

  10.         cout << "请输入" << n << "个权值:";
  11.         CreatHuffmanTree(HuffmanTree, n);
  12.         CreatHuffmanCode(HuffmanTree, HC, n); //这行不对

  13.         cout << "输出哈夫曼编码:" << endl;
  14.         return 0;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-9 12:28:54 | 显示全部楼层
昨非 发表于 2020-11-8 11:35
下方第十四行的位置有语法错误

好的 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 00:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表