freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設(shè)計(jì)哈夫曼編碼編程實(shí)現(xiàn)-文庫吧

2025-06-03 00:07 本頁面


【正文】 } *head0。//這是一個(gè)用來構(gòu)建統(tǒng)計(jì)字符鏈表結(jié)點(diǎn)類型的結(jié)構(gòu)體。其中ch用來記錄相應(yīng)的字符。frequency用來記錄字符出現(xiàn)的字符的頻數(shù),最后用來構(gòu)成哈夫曼樹葉子結(jié)點(diǎn)的權(quán)重。struct huffman_number_node{ char ch。 int data。 int parent。 int left_child。 int right_child。} *head。//這個(gè)用來構(gòu)建哈夫曼樹結(jié)點(diǎn)的類型。ch為字符。data用來記錄權(quán)重。parent用來記//錄該結(jié)點(diǎn)的位置,如果其無父結(jié)點(diǎn),其值為1,left_child來記錄其左子結(jié)點(diǎn)的位置,無左子樹,就記錄為0。ritht_child 用來記錄右子結(jié)點(diǎn)的位置。如果無右子結(jié)點(diǎn)就把它記錄為0。struct stack_data{ int one_zeros。}。struct stack{ struct stack_data *base。 struct stack_data *top。} stack_operate。//建立一個(gè)棧來存放huffman codeint main(void){ initialization_of_head()。//初始化承載不同字符及其頻數(shù)的鏈表的表頭結(jié)點(diǎn)。 view()。 int n=head0frequency。//把完成統(tǒng)計(jì)后,承載字符的鏈表中的總字符個(gè)數(shù)賦值給一個(gè)整 //數(shù)n,用以做參數(shù)傳遞,完成后面函數(shù)的功能。 enter_huffman_values(n)。//該函數(shù)的主要功能性就是,創(chuàng)建要構(gòu)建的樹的所有的結(jié)點(diǎn)空間 //并把葉子結(jié)點(diǎn)賦值。 creat_huffman_tree(n,n)。//在上函數(shù)完成葉子結(jié)點(diǎn)的輸入的基礎(chǔ)上創(chuàng)建哈夫曼樹。 coutendl。 coutendl。 read_huffman_code()。//把哈夫曼編碼打印出來 coutendl。 system(pause)。 return 0。}void view(void){ cout**************************************************endl。 cout from the file reading characters endl。 cout from the keyboard reading characters endl。 coutplease select the corresponding option .endl。 int select_number。 cinselect_number。 switch(select_number) { case 1:read_file()。system(cls)。break。 case 2:statistics()。system(cls)。break。 default:exit(0)。 }}void read_huffman_code(void)//打印哈夫曼編碼{ cout display huffman code in followingendlendl。 struct huffman_number_node *pointer1=head。//用pointer來訪問哈夫曼樹。for(int i=0。ihead0frequency。i++)//這個(gè)循環(huán)中訪問存儲空間中的前head0frequency 個(gè)葉子結(jié)點(diǎn)。并輸出各葉子結(jié)點(diǎn)的 ch數(shù)據(jù)項(xiàng)與huffman code. { if(pointer1ch!=39。 39。amp。amp。pointer1ch!=39。\n39。)//由于字符中可能會出現(xiàn)空格與換行符,于它們的ch數(shù)據(jù)項(xiàng)的顯示特殊化處理。 coutpointer1ch39。=39。//如果,ch數(shù)據(jù)項(xiàng)不是空格與換行符,就直接打印。 else { if(pointer1ch==39。 39。)//是空格符就用(a bland space)來代替顯示 { cout(a bland space)39。=39。 } else cout(line feed)39。=39。//如果是換行符,就用(line feed)來代替顯示 } go_further_read(pointer1)。//進(jìn)入讀取相就字符的huffman code. cout39。\t39。39。\t39。 pointer1++。 if((i+1)%2==0) coutendl。 }}void go_further_read(struct huffman_number_node *pointer)//這個(gè)函數(shù)中以葉子結(jié)點(diǎn)開始,來讀哈夫曼碼元。讀的方法是從葉子結(jié)點(diǎn)開始,然后就順著葉子結(jié)點(diǎn)所記錄的父結(jié)點(diǎn)。訪問其父結(jié)點(diǎn)。在父結(jié)點(diǎn)中記錄其是左子樹,直到訪問到根結(jié)點(diǎn){=new struct stack_data[head0frequency]。//創(chuàng)建一個(gè)棧來存儲相就的哈夫曼編碼struct huffman_number_node *pointer1=pointer,*pointer2。//輔助訪問指針pointer1與pointer2 =。//初始化棧。while(pointer1parent!=1)//由于輸入結(jié)點(diǎn)數(shù)據(jù)時(shí),根結(jié)點(diǎn)的parent項(xiàng)記錄為1,這是循環(huán)條件用來判斷是否訪問到根結(jié)點(diǎn) { pointer2=hea
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1