哈夫曼编码

哈夫曼编码_第1张图片

输入格式:

只有一行,是一个字符串,由长度不超过255个字符的小写英文字母组成。

输出格式:

有若干行,每行由两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的ASCII码的先后顺序排列。

输入样例:

soon

输出样例:

o 2
n 1
s 1

简单的huffman树题,但由于还没自学到,所以用了骚操作,强行过掉了....

代码如下

#include 
#include 
#include 
int a[26]={0};
struct huffman
{
    char c;
    int time;
};
int main()
{
    struct huffman a[30];
    char s[256];
    gets(s);
    int i,j;
    for(i=0;i<26;i++)
    {
        a[i].c=97+i;
        a[i].time=0;
    }
    for(i=0;s[i]!='\0';i++)
    {
        switch(s[i])
        {
            case 'a':a[0].time++;break;
            case 'b':a[1].time++;break;
            case 'c':a[2].time++;break;
            case 'd':a[3].time++;break;
            case 'e':a[4].time++;break;
            case 'f':a[5].time++;break;
            case 'g':a[6].time++;break;
            case 'h':a[7].time++;break;
            case 'i':a[8].time++;break;
            case 'j':a[9].time++;break;
            case 'k':a[10].time++;break;
            case 'l':a[11].time++;break;
            case 'm':a[12].time++;break;
            case 'n':a[13].time++;break;
            case 'o':a[14].time++;break;
            case 'p':a[15].time++;break;
            case 'q':a[16].time++;break;
            case 'r':a[17].time++;break;
            case 's':a[18].time++;break;
            case 't':a[19].time++;break;
            case 'u':a[20].time++;break;
            case 'v':a[21].time++;break;
            case 'w':a[22].time++;break;
            case 'x':a[23].time++;break;
            case 'y':a[24].time++;break;
            case 'z':a[25].time++;break;
        }
    }
    for(i=0;i<25;i++)
    {
        for(j=0;j<25-i;j++)
        {
            if(a[j].time

你可能感兴趣的:(数据结构,pta)