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

正文內(nèi)容

課程設(shè)計(jì)哈夫曼編碼編程實(shí)現(xiàn)(編輯修改稿)

2024-07-15 00:07 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 d+(pointer1parent1)。//pointer2指向pointer1的父結(jié)點(diǎn)。 if((pointer1head+1)==pointer2left_child)//判斷pointer1是父結(jié)點(diǎn)的左子結(jié)點(diǎn)還是右子結(jié)點(diǎn)。 { one_zeros=0。//是左子結(jié)點(diǎn)就向棧中輸入0 ++。 } else { one_zeros=1。//是右子結(jié)點(diǎn)就向棧中輸入1 ++。 } pointer1=pointer2。 } reading_code()。//進(jìn)入讀棧函數(shù)}void reading_code()//用棧的讀取方法讀取碼元就那個(gè)字符的哈夫曼編碼。{ struct stack_data *pointer。 for(。0。 ) { pointer=。 coutpointerone_zeros。 }}int enter_huffman_values(int n){head=new struct huffman_number_node[2*n1]。//由于哈夫曼樹中,有n個(gè)葉子結(jié)點(diǎn),哈夫曼樹就應(yīng)有2*n1個(gè)結(jié)點(diǎn)。于是就創(chuàng)建2*n1個(gè)空間來(lái)用于存放相應(yīng)的結(jié)點(diǎn)數(shù)據(jù)并把該空間的地址給head.struct huffman_number_node *pointer=head。//創(chuàng)建一個(gè)同哈夫曼樹結(jié)點(diǎn)同類型的指針,用來(lái)向那個(gè)空間輸入相應(yīng)的數(shù)據(jù)。struct information_node *pointer1=head0next。//創(chuàng)建一個(gè)訪問(wèn)承載統(tǒng)計(jì)字符鏈表的指針。for(int i=0。in。i++)//用循環(huán)來(lái)給存儲(chǔ)哈夫曼樹結(jié)點(diǎn)的那個(gè)空間的前n個(gè)空間輸入n個(gè)結(jié)點(diǎn)值,這n個(gè)結(jié)點(diǎn)是葉子結(jié)點(diǎn)。它們的相關(guān)數(shù)據(jù)來(lái)自承載統(tǒng)計(jì)字符鏈表中的相應(yīng)數(shù)據(jù),一個(gè)葉子結(jié)點(diǎn),就要讀取一個(gè)承載統(tǒng)計(jì)字符鏈表的一個(gè)結(jié)點(diǎn)的數(shù)據(jù)。 { pointerch=pointer1ch。//這個(gè)葉子結(jié)點(diǎn)讀取一個(gè)承載統(tǒng)計(jì)字符鏈表的一個(gè)結(jié)點(diǎn)的字符數(shù)據(jù)項(xiàng)。 pointerdata=pointer1frequency。//這個(gè)葉子結(jié)點(diǎn)繼續(xù)讀取承載統(tǒng)計(jì)字符鏈表那個(gè)結(jié)點(diǎn)的字符個(gè)數(shù)統(tǒng)計(jì)數(shù)據(jù)項(xiàng)。 pointerparent=1。//由于還沒(méi)有構(gòu)成哈夫曼樹,存儲(chǔ)空間的第一個(gè)結(jié)點(diǎn)位置為1. pointerleft_child=0。//以0來(lái)表示,該結(jié)點(diǎn)沒(méi)有左子結(jié)點(diǎn)。如果有的話,就是其左子結(jié)點(diǎn)的存儲(chǔ)空間位置。 pointerright_child=0。//同上,只是這里是右子結(jié)點(diǎn)。 pointer++。 pointer1=pointer1next。 } for(int i=n。i2*n1。i++)//這個(gè)部分是把存儲(chǔ)空間的其它沒(méi)有存儲(chǔ)數(shù)據(jù)的空間初始化。 { pointerch=39。39。 pointerparent=1。 pointerleft_child=0。 pointerright_child=0。 pointer++。 } return n。}bool find_record(char cha)//找出已存入的字符{struct information_node *pointer。//創(chuàng)建一個(gè)同承載字符鏈表的結(jié)點(diǎn)同類型的指針,用于訪問(wèn)那個(gè)鏈表。if(head0frequency==0) return false。//如果還沒(méi)那個(gè)鏈表中還沒(méi)有字符的插入,就向調(diào)用函數(shù)返回沒(méi)有這個(gè)字符的記錄。 else { pointer=head0next。//如果鏈表中有字符,就用pointer來(lái)訪問(wèn)查找,把查找的開始位置告訴pointer. for(int i=0。ihead0frequency。i++)//這里就用到鏈表表頭中的字符總數(shù)記錄,來(lái)判斷要訪問(wèn)多少個(gè)結(jié)點(diǎn)。 { if(pointerch==cha)//判斷訪問(wèn)到的結(jié)點(diǎn)是不是有要查找的字符。有就向調(diào)用函數(shù)回答是。 { pointerfrequency+=1。//由于有該字符,就向該字符的個(gè)數(shù)記錄項(xiàng)加1. return true。 } pointer=pointernext。 } return false。//最后還是沒(méi)找到就,向調(diào)用函數(shù)返回否。 }}void recording(char ch)//插入新字符{struct information_node *pointer=head0。//創(chuàng)建一個(gè)與承載統(tǒng)計(jì)字符的鏈表的表頭結(jié)點(diǎn)同類型的指針并指向那個(gè)頭結(jié)點(diǎn)。while(pointernext!=NULL)//循環(huán)的方式來(lái)找到承載統(tǒng)計(jì)字符的鏈表的表尾結(jié)點(diǎn)。用以插入一個(gè)新的結(jié)點(diǎn),來(lái)存儲(chǔ)新的結(jié)點(diǎn)。 pointer=pointernext。head0frequency+=1。//由于,插入在承載統(tǒng)計(jì)字符的鏈表中插入了一個(gè)新的結(jié)點(diǎn),也就是有了一個(gè)新的字符,那就在其表結(jié)點(diǎn)的字符統(tǒng)計(jì)中加1. pointernext=new struct information_node。//創(chuàng)建新的結(jié)點(diǎn),用以記錄新的字符。 pointernextch=ch。 pointernextfrequency=1。//同時(shí),記錄這個(gè)字符的個(gè)數(shù)以有了一個(gè)。 pointernextnext=NULL。//把這個(gè)表尾的結(jié)點(diǎn)的指針域賦為NULL,用于以后的判斷。}void
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1