哈夫曼编码的构造,使用的链表存储,另外设置了一个头指针的结构体类型,运行结果如下求解

img


这是构造哈夫曼编码的代码

img


这是输出的代码

img


这个是定义的两个结构体的代码

img


程序运行输出的代码
应该是构造编码和输出出了问题,已经看好久了还是没能解决求解

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/667169
  • 这篇博客也不错, 你可以看下【数据结构】二叉树的顺序结构及实现,堆,向上调整算法,向下调整算法,数组建堆算法,堆排序
  • 除此之外, 这篇博客: 数据结构——详解图的深度优先遍历和广度优先遍历及代码实现中的 在完成深度优先遍历之前,我们首先需要对图进行初始化工作,这儿的图是从文件中直接读取的 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • template<class DataType>
    class MGraph
    {
    public:
        MGraph();
        ~MGraph(){}
        void DFSTraverse(int v);
        void BFSTraverse(int v);
    	int vertexNum,arcNum;//图的顶点数和边数
    	DataType vertex[MaxSize];//顶点
    private:
        int arc[MaxSize][MaxSize];//图的边长
    	bool DFSvisited[MaxSize];//定义一个DFS遍历过标记
    	bool BFSvisited[MaxSize];//定义一个BFS遍历过标记
    };
    template<class DataType>//构造函数
    MGraph<DataType>::MGraph()
    {
    	int i,j;
    	fstream fcin_vertex;
    	fcin_vertex.open("vertex.txt",ios::in);//打开一个文件用于从文件输入顶点
    	vertexNum=0,arcNum=0;//令顶点数、边数赋值为0
        while(!fcin_vertex.eof())
    		fcin_vertex>>vertex[vertexNum++];
    	fcin_vertex.close();
    	memset(DFSvisited,0,sizeof(DFSvisited));//这个函数用来给DFSvisited数组所有成员赋0
    	memset(BFSvisited,0,sizeof(BFSvisited));
        for(i=0;i<vertexNum;i++)
            for(j=0;j<vertexNum;j++)
    		{
    			if(i==j)
    				arc[i][j]=0;//如果是相同顶点,则初始化为0
    			else
    				arc[i][j]=MAX;//否则将边长初始化为MAX;
    		}
    	fstream fcin_arc;
    	fcin_arc.open("arc.txt",ios::in);//打开一个文件用于从文件输入边
    	i=0,j=0;
    	while(i!=-1)
    	{
    		fcin_arc>>i;
    		if(i==-1)
    			continue;
    		else
    		{
    			fcin_arc>>j;
    			if(arc[i][j]==0||arc[i][j]==MAX)//如果这条边等于0或者等于MAX,说明这条边还没被修改过,这时候修改一次,边数+1,
    				                            //否则,则说明这条边已经被修改过,再修改边数也不会增加
    				arcNum++;
    			fcin_arc>>arc[i][j];
    			arc[j][i]=arc[i][j];//由于是无向图,i到j的距离等于j到i的距离
    		}
    	}
    	fcin_arc.close();
    }
    
  • 您还可以看一下 李月喜老师的企业微信开发自建内部应用开发篇课程中的 开发文档如何阅读,如何寻求帮助,如何找到同行小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    抱歉,这些参考资料中没有与“构造哈夫曼编码和输出正常结果”相关的内容,无法给出具体的解决方案。建议提供更多问题细节以及您的代码和数据结构/算法实现方式,这样才能更好地帮助您解决问题。谢谢理解。