早教吧作业答案频道 -->其他-->
C语言霍夫曼编码本题要求各函数的参数使用指针假设字母a、b、c、d、e、f的霍夫曼编码分别是1、00、011、0100、01010、01011。那么字符串“abcdef”的编码显然就是字符串“10001101000101001011”。
题目详情
C 语言 霍夫曼编码
本题要求各函数的参数使用指针
假设字母a、b、c、d、e、f的霍夫曼编码分别是1、00、011、0100、01010、01011。那么字符串“abcdef”的编码显然就是字符串“10001101000101001011”。
(1)编写编码函数实现对字符串“abcdef”的编码,显示编码结果。
(2)编写译码函数对刚才得到的编码进行译码,显示译码结果。
(3)假设有一段编码“010111011010100100010010100”,请对其译码,并显示译码结果。
本题要求各函数的参数使用指针
假设字母a、b、c、d、e、f的霍夫曼编码分别是1、00、011、0100、01010、01011。那么字符串“abcdef”的编码显然就是字符串“10001101000101001011”。
(1)编写编码函数实现对字符串“abcdef”的编码,显示编码结果。
(2)编写译码函数对刚才得到的编码进行译码,显示译码结果。
(3)假设有一段编码“010111011010100100010010100”,请对其译码,并显示译码结果。
▼优质解答
答案和解析
#include <stdio.h>
#include <string.h>
/*
本题要求各函数的参数使用指针
假设字母a、b、c、d、e、f的霍夫曼编码分别是1、00、011、0100、01010、01011。那么字符串“abcdef”的编码显然就是字符串“10001101000101001011”。
(1)编写编码函数实现对字符串“abcdef”的编码,显示编码结果。
(2)编写译码函数对刚才得到的编码进行译码,显示译码结果。
(3)假设有一段编码“010111011010100100010010100”,请对其译码,并显示译码结果。
*/
char hufman[6][10] = {
{"a1"},
{"b00"},
{"c011"},
{"d0100"},
{"e01010"},
{"f01011"},
};
void code(char *src,char *dest)
{
int i;
int len = 0;
while(*src != '\0')
{
for(i=0;i<6;i++)
{
if(*src == hufman[i][0])
{
strcpy(dest + len,hufman[i]+1);
len += strlen(hufman[i]+1);
break;
}
}
src ++;
}
}
void decode(char *src,char *dest)
{
int i;
int len = 0;
while(*src != '\0')
{
for(i=0;i<6;i++)
{
if(strncmp(src,hufman[i]+1,strlen(hufman[i]+1)) == 0)
{
dest[len++] = hufman[i][0];
src += strlen(hufman[i]+1);
break;
}
}
}
dest[len] = 0;
}
int main(int argc,char *argv[])
{
char *str = "abcdef";
char *str1 = "010111011010100100010010100";
char res[100] = {0};
char decodeRes[20];
code(str,res);
printf("%s\n",res);
decode(res,decodeRes);
printf("%s\n",decodeRes);
decode(str1,decodeRes);
printf("%s\n",decodeRes);
}
看了C语言霍夫曼编码本题要求各函数...的网友还看了以下:
7月30日上午8:10-10:30沙坪路一带8:30-11:00月湖小区一带10:00-下午1:2 2020-07-03 …
请各路大侠帮忙1、设4阶矩阵A=(aij)=(a1,a2,a3,a4),B=(a4,a3,a2,a 2020-07-09 …
正则表达式((00)((00)*)),表示语言{00}{00}*,为什么不等于{00}+,而((( 2020-07-23 …
两人约定在20:00到21:00之间相见,并且先到者必须等迟到者40分钟方可离去,如果两人出发是各自 2020-11-03 …
两人约定在20:00到21:00之间相见(两人出发是各自独立,且在20:00到21:00各时刻相见的 2020-11-03 …
出生率一半要控制在()左右.(10.00分)A.1.50%B.1.5‰C.1.00%出生率一半要控制 2020-11-11 …
地理时差计算题从上海向伦敦报价,若用最快的速度应什么时间报最好?要求在办公时间内收到(注:伦敦办公时 2020-11-24 …
下表是小轩假期一天的作息时间:上午下午7:00起床1:00-2:00午睡8:00-10:00做作业2 2020-12-01 …
下表是小轩假期一天的作息时间:上午下午7:00起床1:00-2:00午睡8:00-10:00做作业2 2020-12-01 …
用24时记时法表示下列时刻.上午8:00晚上8:00早晨6:00中午12:00下午4:00凌晨2:0 2020-12-01 …