資料結構(C )課程設計 3號題

2021-06-28 03:55:48 字數 3423 閱讀 5691

資料結構課程設計

3號課程設計題目

姓       名

葉思怡

學       號

201311672123

專      業

物聯網工程1131

學      院

資訊學院

一. 題目要求

題目3.

在乙個加密應用中,要處理的資訊來自下面的字符集,各個字元的相關使用頻度如下:

字元  空格 a  b  c  d   e  f  g   h  i   j  k  l m

頻度  180 64 13 23  32103 22 15   4757  1 5  31  20

字元 n o  p   q  r  s t   u  v  w x y  z 

頻度 55 63  151 48  56  80 25 7  18  2  16  1

現請編寫程式你實現如下功能:

(1)執行時,由使用者輸入來初始化字符集大小和相應用字元。

(2)輸入乙個要加密的字串,將其加密。

(3)輸出解密字串。

二.程式如下

#include#define n 27       //空格+26個大寫字母

#define m 2*n-1

#define infinity 32767

struct node //huffman樹的結點結構;

struct codetype //huffman編碼結構;

struct element //字元及其編碼的結構;

struct node tree[m+1]; //n個結點的huffman樹

struct element table[n+1],t[100]; //n個結點的huffman編碼表,報文編碼

int x1,x2;

void sethuftree(); //有關函式宣告

void select0(int s);

void sethufcode();

void setcode();

void printtree();

void printhufcode();

void main() //**********主函式**********

void sethuftree() //建立huffuman樹

; char tablesymbol[n]=;

for(i=1;i<=m;i++) //初始雙親,左,右結點為:0

tree[i].plink=tree[i].llink=tree[i].rlink=0;

for(i=1;i<=n+1;i++) //初始化27個字元及其權值

for(i=n+1;i<=m;i++) //找權值最小的2個結點,組成huffman樹

} void select0(int s) //找權值最小的2個結點

{ int i;

float v1,v2;

v1=v2=infinity;

x1=x2=0;

for(i=1;i<=s;i++)

if(tree[i].plink==0)

if(tree[i].weight三.除錯截圖

四.設計說明

1.一般而言,給定n個實數w1,w2,......,wn(n≥2),求乙個具有n個結點的二叉數,使其帶權路徑長度最小。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點的層數)。樹的帶權路徑長度記為wpl=(w1*l1+w2*l2+w3*l3+...+wn*ln),n個權值wi(i=1,2,...n)構成一棵有n個葉結點的二叉樹,相應的葉結點的路徑長度為li(i=1,2,...n)。可以證明哈夫曼樹的wpl是最小的。

2.給定字符集的哈夫曼樹生成後,求哈夫曼編碼的具體實現過程是:依次以葉子t[i](0≤i≤n-1)為出發點,向上回溯至根為止。上溯時走左分支則生成**0,走右分支則生成**1。

3.用乙個外部變數count記錄下所輸入的所有字元,然後,用外部變數count0統計字元種類(方便統計後面統計頻度),記錄過程在建立huffuman樹函式void creatht()裡實現,並完成記錄字元總數,統計字元種類、頻度,完成huffman樹的建立等。

五.體會和感受

1.其實上完乙個學期的資料結構,還是會有很多不解和疑問的,不過我覺得老師是給了很多指導和思想方法也一直鼓勵和引導我們自己多去做和思考。

2.學期開始的時候熱情還比較多,會認真完成實驗和作業,可能隨著一些生活上的其他事情的影響,慢慢會有懈怠,但還是對這門課很有興趣,有時候多思考,理解之後會覺得很多知識真的是很值得深入了解和學習,書上的思想方法也是很奇妙很精闢。

3.資料結構的筆試考試發現了自己很多還沒有學習透徹的地方,雖然中間有金工實習,影響了部分學習時間,但是確實在考試中發現自己對資料結構的學習和研究還差很多。資料結構雖然不是一門技術或什麼,但是肯定是很多學習的基礎,需要用到的地方很多。

4.至於課程設計,一開始看到題目真的是不知所措,本來c++基礎並不紮實,對程式設計更多是要多練習和理解吧,這樣很多問題都可以用語言來解決,希望以後能夠取得更大的進步和突破。

資料結構課程設計(c 3號題

資料結構課程設計 3號課程設計題目 姓 名 葉思怡 學 號 201311672123 專 業 物聯網工程1131 學 院 資訊學院 一.題目要求 題目3.在乙個加密應用中,要處理的資訊來自下面的字符集,各個字元的相關使用頻度如下 字元 空格 a b c d e f g h i j k l m 頻度 ...

資料結構課程設計

資料結構課程設計 include define n 30 include include includeusing namespace std struct node typedef node phone,mingzi node hashnumble node hashname int hash1 ...

資料結構課程設計

小明是乙個計算機專業top student 祝賀他畢業了。並準備到銀行參加工作。上班第一天,經理叫他編制乙個實現乙個活期儲蓄處理程式,算作考查。上班第一天,一定要給領導乙個好印象,小明二話沒說,就答應了。現要你是小明了,請完成如下題目功能。儲戶開戶 銷戶 存入 支出活動頻繁,系統設計要求 1 能比較...