⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 霍夫曼编码的实现
💻 C
字号:
/*
 * 作者:antigloss at http://cpp.ga-la.com
 * 最后修改:05-10-2 15:35
 * 蚂蚁的 C/C++ 标准编程
 */

#include <stdio.h>
#include <stdlib.h>
#include "header/huffmantree.h"
#include "mylib/error_handler.h"

static const char *msg[] = { "How many characters will you input: ",
                             "Invalid input!! You should input an integer.",
                             "Failed to initialize huffman tree..." };

int main(void)
{
	unsigned n;
	int chk; /* 检查输入合法性 */
	HuffmanTree ht;
	HuffmanCode hc;

	fputs( msg[0], stdout );
	while ( ( chk = scanf("%u", &n) ) != 1 ) {
        if ( chk != EOF ) {
            flush_stdin();
        }
        printf("%s\n\n%s", msg[1], msg[0]);
    }
    flush_stdin();
	if ( n < 2 ) {
        error("%s\n", "no need to form huffman code...");
    }    
    
	ht = init_hufftree(n);
	if ( !ht ) {
		error("%s\n", msg[2]);
    }
    
    creat_hufftree(ht, n);         /* 形成赫夫曼树 */    
    hc = encode_hufftree(ht, n);   /* 求赫夫曼编码 */
    if ( !hc ) {
        free(ht);
        error("%s\n", "failed to form huffman code...");
    }    
    print_huffcode(hc, ht, n); /* 输出赫夫曼编码 */
    
    /* 释放内存 */
    destroy_huffcode(hc, n);    
	free(ht);
	
	printf("\n\nWaiting for your visit to http://cpp.ga-la.com again!\n\n"
           "Press ENTER to quit...");
    getchar();
    
	return EXIT_SUCCESS;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -