1樓:
/*說實話,哈夫曼樹的編碼有點難度,這個**是我花了三四個小時寫的,
不能完全滿足你的要求,但是可以進行哈夫曼編碼,你試著向你題目的要求改一下吧。*/
#include
#include
#define n 5
#define m 2*n-1
typedef struct hf_node
htnode;
typedef struct node
*btree;
typedef htnode huffmant[m];
bool is_empty(btree root)
void visit(btree root) //訪問二叉樹的結點
void print(huffmant t) //以陣列的形式輸出哈夫曼樹
for(j=0;j<=n;++j)
}void create_ht(huffmant t) //建立哈夫曼樹
void inorder(btree root) //以中序遍歷二叉樹
}void postorder(btree root)
以後序遍歷刪除二叉樹
root=0; //為了防止指標出現錯誤,最好加上
}void hf_preorder(huffmant t,int i) //哈夫曼樹的所有內節點都有兩個孩子,都經過擴充,先序遍歷
cout< i=t[i].lchild; hf_preorder(t,i); i=t[i].parent; //訪問完左子樹之後通過其雙親結點訪問其右兄弟,必須通過雙親結點才能找到右兄弟 i=t[i].rchild; //因為i=t[i].lchild使i的值不斷變化,且回溯後不能變為遞迴之前的狀態 hf_preorder(t,i); }void hf_inorder(huffmant t,int i) //中序遍歷 i=t[i].lchild; hf_inorder(t,i); i=t[i].parent; //必須在此處找到雙親結點 cout< i=t[i].rchild; //因為i已經為雙親結點,所以不必找雙親結點了 hf_inorder(t,i); }void hf_postorder(huffmant t,int i) //後序遍歷 i=t[i].lchild; hf_postorder(t,i); i=t[i].parent; //必須在此處找到雙親結點 i=t[i].rchild; //通過雙親結點找到右兄弟 hf_postorder(t,i); i=t[i].parent; //左右結點都訪問結束後訪問雙親結點,再找雙親結點 cout< }void huffmancode(huffmant t) //構造哈弗曼編碼 cout< void main() 2樓:手機使用者 我已經發給你了哦·~~ 我修改成c語言的了,並且能編譯通過了,可以執行了只是,執行的結果,對不對,我沒有驗證。include include void data double a,int x,int m,int n break case 25 演算法同上 for y i 2 y i 2 y break a i j sum ... 要原始碼還是要程式,等下發!c語言課程設計。一 設計專案 設計一個學生成績管理系統,該系統包括兩個大部分 1 學生基本情況錄入與查詢 包括學號 姓名 2 學生成績錄入與查詢 成績包括語文 數學 英語共3科 查詢包括各人的成績 最高最低平均分 名次 全班的總分 二 設計要求 1 採用c語言 vc 程式... ox是隻十六進位制數字。就是10進位制的128 這個問題是沒有必要求教c高手的!c語言中的a 0x80是什麼意思 董俊錕 是按位與運算 ox表示十六進位制數 關於按位與運算,先要將其他的進位制數轉化為二進位制數,然後計算ox80轉化為二進位制就是10000000 比如a是十進位制數15,轉化為二進位...高手進來看看C語言c,求高手解釋下 C語言 C 語言 C 語言的區別?及年代背景?
求助C語言高手!!C語言小問題,求指教!!
求c語言高手c080是什麼意思,求C語言高手 c 0x80是什麼意思