久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

數據結構課程設計大綱

時間:2019-05-12 01:12:26下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《數據結構課程設計大綱》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《數據結構課程設計大綱》。

第一篇:數據結構課程設計大綱

數據結構課程設計大綱

一、數據結構課程設計要求

學生必須仔細閱讀數據結構課程設計大綱,認真主動完成課設的要求。有問題及時主動通過各種方式與教師聯系溝通。

學生要發揮自主學習的能力,充分利用時間,安排好課設的時間計劃,并在課設過程中不斷檢測自己的計劃完成情況,及時的向教師匯報。

課程設計要求每位學生從老師給定題目中,至少挑選1個功能塊或每2-3位學生挑選1個系統進行設計,并提交課程設計報告。按照教學要求需要一周時間完成,每天(按每周5天)至少要上3-4小時的機來調試設計的程序。學生也可自選課程設計題目,要求包含一定復雜程度的數據結構設計和具有較大的程序工作量,但需老師協商認可。

二、數據結構課程設計可選題目

可選功能塊

1、文章編輯

功能:輸入一頁文字,程序可以統計出文字、數字、空格的個數。

靜態存儲一頁文章,每行最多不超過80個字符,共N行;

要求:(1)分別統計出其中英文字母數和空格數及整篇文章總字數;

(2)統計某一字符串在文章中出現的次數,并輸出該次數;(3)刪除某一子串,并將后面的字符前移。

存儲結構使用線性表,分別用幾個子函數實現相應的功能;

輸入數據的形式和范圍:可以輸入大寫、小寫的英文字母、任何數字及標點符號。

輸出形式:

(1)分行輸出用戶輸入的各行字符;

(2)分4行輸出“全部字母數”、“數字個數”、“空格個數”、“文章總字數”;(3)輸出刪除某一字符串后的文章。

2、建立二叉樹,層序、先序遍歷(用遞歸或非遞歸的方法都可以)

任務:要求能夠輸入樹的各個結點,并能夠輸出用不同方法遍歷的遍歷序列;分別建立建立二叉樹存儲結構的的輸入函數、輸出層序遍歷序列的函數、輸出先序遍歷序列的函數。

3、猴子選大王

任務:一堆猴子都有編號,編號是1,2,3...m ,這群猴子(m個)按照1-m的順序圍坐一圈,從第1開始數,每數到第N個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。

要求:

輸入數據:輸入m,n m,n 為整數,n

輸出形式:中文提示按照m個猴子,數n 個數的方法,輸出為大王的猴子是幾號,建立一個函數來實現此功能。

4、紙牌游戲

任務:編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數,是3的倍數的牌翻一次,直到最后一張牌;然后?從第4張開始,以4為基數,是4的倍數的牌翻一次,直到最后一張牌;...再依次5的倍數的牌翻一次,6的,7的 直到 以52為基數的 翻過,輸出:這時正面向上的牌。

5、joseph環

任務:編號是1,2,??,n的n個人按照順時針方向圍坐一圈,每個人只有一個密碼(正整數)。一開始任選一個正整數作為報數上限值m,從第一個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數,如此下去,直到所有人全部出列為止。設計一個程序來利用單向循環鏈表存儲結構模擬此過程,按照出列的順序輸出各個人的編號。

要求:

輸入數據:建立輸入處理輸入數據,輸入m的初值,n,輸入每個人的密碼,建立單循環鏈表。

輸出形式:建立一個輸出函數,將正確的輸出序列;

測試數據:m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什么?

可選系統

1、航空客運定票系統?;疽螅?/p>

每條航線所涉及的信息有:終點站名、航班號、飛機號、飛機周日(星期幾)、乘員定額、余票量、訂定票的客戶名單(包括姓名、訂票量、艙位等級1,2或3)以及等候替補的客戶名單(包括姓名、所需數量)。

系統能實現的操作和功能如下:

1)查詢航線:根據客戶提出的終點站名輸出如下信息:航班號、飛機號、星期幾飛行,最近一天航班的日期和余票額;

2)承辦訂票業務:根據客戶提出的要求(航班號、訂票數額)查詢該航班票額情況,若有余票,則為客戶辦理訂票手續,輸出座位號;若已滿員或余票少余訂票額,則需重新詢問客戶要求。若需要,可登記排隊候補;

3)承辦退票業務:根據客戶提出的情況(日期、航班號),為客戶辦理退票手續,然后查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續,否則依次詢問其它排隊候補的客戶。

實現提示:兩個客戶名單可分別由線性表和隊列實現。為查找方便,已訂票客戶的線性表應按客戶姓名有序,并且,為了插入和刪除方便,應以鏈表作為存儲結構。由于預約人數無法預計,隊列也應以鏈表作為存儲結構。

2、校園導游咨詢(為來訪的客人提供各種信息服務)基本要求:

1)設計你的學校的校園平面圖,所含景點10個左右。以圖中頂點表示校園內各景點,存放景點名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等有關信息。

2)為來訪客人提供圖中任意景點相關信息的查詢。

3)為來訪客人提供任意景點的問路查詢,即查詢任意兩個景點之間的一條最短路徑。實現提示:一般情況下,校園的道路是雙向通行的,可設計校園平面圖是一個無向網。頂點和邊均含有相關信息。

3、停車場管理系統

問題描述:設有一個可以停放n輛汽車的狹長停車場,它只有一個大門可以供車輛進出。車輛按到達停車場時間的早晚依次從停車場最里面向大門口處停放(最先到達的第一輛車放在停車場的最里面)。如果停車場已放滿n輛車,則后來的車輛只能在停車場大門外的便道上等待,一旦停車場內有車開走,則排在便道上的第一輛車就進入停車場。停車場內如有某輛車要開走,在它之后進入停車場的車都必須先退出停車場為它讓路,待其開出停車場后,這些車輛再依原來的次序進場。每輛車在離開停車場時,都應根據它在停車場內停留的時間長短交費。如果停留在便道上的車未進停車場就要離去,允許其離去,不收停車費,并且仍然保持在便道上等待的車輛的次序。編制一程序模擬該停車場的管理。

實現要求:要求程序輸出每輛車到達后的停車位置(停車場或便道上),以及某輛車離開停車場時應交納的費用和它在停車場內停留的時間。

實現提示:汽車的模擬輸入信息格式可以是:(到達/離去,汽車牌照號碼,到達/離去的時刻)。例如,(‘A’,1,5)表示1號牌照車在5這個時刻到達,而(‘D’,5,20)表示5號牌照車在20這個時刻離去。整個程序可以在輸入信息為(‘E’,0,0)時結束。本題可用棧和隊列來實現。

4、公交交通指南系統

問題描述:假設以一個帶權有向圖表示某一個區域的公交線路;圖中頂點代表一些區域中的重要場所,弧代表已有的公交線路,弧上的權表示該線路上的票價(或搭乘所需時間)。試設計一個交通指南系統,指導前來咨詢者以最低的票價或最少的時間從區域中的某一場所到達另一場所。

實現提示:該問題可歸結為一個求帶權有向圖中頂點間最短路徑的問題。分別建立以票價為權或以搭乘時間為權的圖的鄰接矩陣,以Floyd算法來求最短路徑及其路徑長度。

5、編寫一個五子棋的游戲程序。

實現要求:實現人與人對下的功能,并且有棋盤顯示,每下一步均在棋盤上有狀態顯示。

6、簡單的職工管理系統

問題描述:對單位的職工進行管理,包括插入、刪除、查找、排序等功能。

實現要求:職工對象包括姓名、性別、出生年月、工作年月、學歷、職務、住址、電話等信息。

(1)新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。(2)刪除一名職工:從職工管理文件中刪除一名職工對象。(3)查詢:從職工管理文件中查詢符合某些條件的職工。(4)修改:檢索某個職工對象,對其某些屬性進行修改。(5)排序:按某種需要對職工對象文件進行排序。

實現提示:職工對象數不必很多,便于一次讀入內存,所有操作不經過內外存交換。(1)由鍵盤輸入職工對象,以文件方式保存。程序執行時先將文件讀入內存。(2)對職工對象中的“姓名”按字典順序進行排序。

(3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。

7、鐵路運輸管理系統 實現要求:

(1)查詢某站所屬的鐵路線(2)要求具備新增鐵路線的管理功能(3)要求具備新增車站的管理功能

(4)針對客運,貨運情況能計算任何一個起始車站到任何一個終點站之間的最短路徑。并且要求能夠顯示出該最短路徑的各個火車站的經由順序;

實現提示:

鐵路運輸網絡中由鐵路線和火車站的兩個主要概念,譬如:1號鐵路線表示京廣線,2號鐵路線表示京滬線等。

鐵路線對象包括鐵路線編號,鐵路線名稱,起始站編號,終點站編號,該鐵路線長度,通行標志(00B客貨運禁行,01B貨運通行專線,10B客運通行專線,11B客貨運通行)。

火車站對象包括所屬鐵路線編號,車站代碼,車站名,車站簡稱,離該鐵路線起點站路程及終點站路程。

三、進度安排

整體設計和詳細設計

2天 編代碼

1天 調試和測試

1天 設計報告書寫

1天

四、課程設計考核方法及成績評定

課程設計結束時,要求學生上交以下內容:

1.源程序:學生按照課程設計的具體要求所開發的所有源程序(應該放到一個以學生“學號姓名”為名的文件夾中);

2.程序的說明文件(保存在.txt中):在說明文檔中應該寫明上交程序所在的目錄,上交程序的主程序文件名,如果需要安裝,要有程序的安裝使用說明; 3.課程設計報告電子版;不得少于8頁;

4.課程設計報告打印版(不附源程序);所有的課程設計報告,均要有封面(見附件);內容必須包括以下部分:

1)給出自己采用的數據結構;

2)給出算法設計思想(可以是描述算法的流程圖); 3)4)給出測試數據和結果;

給出結束語:說明完成課程設計的情況,心得體會;包括課程設計過程的收獲、遇到問題、遇到問題解決問題過程的思考、程序調試能力的思考、對數據結構這門課程的思考、在課程設計過程中對《數據結構》課程的認識等內容。

課程設計成績分兩部分,設計報告占30%,設計作品占70%。按照優秀、良好、中、及格,不及格五級給予成績。

附錄:課程設計報告格式

University of South China

《數據結構》課程設計

題 目 班 級

設計組長 組長姓名(學號)

設計成員 其他成員姓名(學號)

其他成員姓名(學號)

其他成員姓名(學號)

指導教師 姜 瑜 設計時間2010年11月22日至2010年11月27日 評價等級 其他成員姓名(學號)

第二篇:2012數據結構課程設計

數 據 結 構

課程設計報告

題 目: 一元多項式計算 專 業: 信息管理與信息系統 班 級: 2012級普本班 學 號: 201201011367 姓 名: 左帥帥 指導老師: 郝慎學 時 間:

一、課程設計題目分析

本課程設計要求利用C語言或C++編寫,本程序實現了一元多項式的加法、減法、乘法、除法運算等功能。

二、設計思路

本程序采用C語言來完成課程設計。

1、首先,利用順序存儲結構來構造兩個存儲多項式A(x)和 B(x)的結構。

2、然后把輸入,加,減,乘,除運算分成五個主要的模塊:實現多項式輸入模塊、實現加法的模塊、實現減法的模塊、實現乘法的模塊、實現除法的模塊。

3、然后各個模塊里面還要分成若干種情況來考慮并通過函數的嵌套調用來實現其功能,盡量減少程序運行時錯誤的出現。

4、最后編寫main()主函數以實現對多項式輸入輸出以及加、減、乘、除,調試程序并將不足的地方加以修改。

三、設計算法分析

1、相關函數說明:

(1)定義數據結構類型為線性表的鏈式存儲結構類型變量

typedef struct Polynomial{}

(2)其他功能函數

插入函數void Insert(Polyn p,Polyn h)

比較函數int compare(Polyn a,Polyn b)

建立一元多項式函數Polyn Create(Polyn head,int m)

求解并建立多項式a+b,Polyn Add(Polyn pa,Polyn pb)

求解并建立多項式a-b,Polyn Subtract(Polyn pa,Polyn pb)2

求解并建立多項式a*b,Polyn Multiply(Polyn pa,Polyn pb)

求解并建立多項式a/b,void Device(Polyn pa,Polyn pb)

輸出函數輸出多項式,void Print(Polyn P)

銷毀多項式函數釋放內存,void Destroy(Polyn p)

主函數,void main()

2、主程序的流程基函數調用說明(1)typedef struct Polynomial {

float coef;

int expn;

struct Polynomial *next;} *Polyn,Polynomial;

在這個結構體變量中coef表示每一項前的系數,expn表示每一項的指數,polyn為結點指針類型,屬于抽象數據類型通常由用戶自行定義,Polynomial表示的是結構體中的數據對象名。

(2)當用戶輸入兩個一元多項式的系數和指數后,建立鏈表,存儲這兩個多項式,主要說明如下:

Polyn CreatePolyn(Polyn head,int m)建立一個頭指針為head、項數為m的一元多項式

p=head=(Polyn)malloc(sizeof(struct Polynomial));為輸入的多項式申請足夠的存儲空間

p=(Polyn)malloc(sizeof(struct Polynomial));建立新結點以接收數據

Insert(p,head);調用Insert函數插入結點

這就建立一元多項式的關鍵步驟

(3)由于多項式的系數和指數都是隨即輸入的,所以根據要求需要對多項式按指數進行降冪排序。在這個程序模塊中,使用鏈表,根據對指數大小的比較,對各種情況進行處理,此處由于反復使用指針對各個結點進行定位,找到合適的位置再利用void Insert(Polyn p,Polyn h)進行插入操作。(4)加、減、乘、除、的算法實現:

在該程序中,最關鍵的一步是實現四則運算和輸出,由于加減算法原則是一樣,減法可通過系數為負的加法實現;對于乘除算法的大致流程都是:首先建立多項式a*b,a/b,然后使用鏈表存儲所求出的乘積,商和余數。這就實現了多項式計算模塊的主要功能。

(5)另一個子函數是輸出函數 PrintPolyn();

輸出最終的結果,算法是將最后計算合并的鏈表逐個結點依次輸出,便得到整鏈表,也就是最后的計算式計算結果。由于考慮各個結點的指數情況不同,分別進行了判斷處理。

四、程序新點

通過多次寫程序,發現在程序在控制臺運行時總是黑色的,本次寫程序就想著改變一下,于是經過查資料利用system(“Color E0”);可以函數解決,這里“E0,”E是控制臺背景顏色,0是控制臺輸出字體顏色。

五、設計中遇到的問題及解決辦法

首先是,由于此次課程設計里使用指針使用比較多,自己在指針多的時候易腦子混亂出錯,對于此問題我是采取比較笨的辦法在稿紙上寫明白后開始進行 4

代碼編寫。

其次是,在寫除法模塊時比較復雜,自己通過查資料最后成功寫出除法模塊功能。

最后是,前期分析不足開始急于寫代碼,中途出現各種問題,算是給自己以后設計時的一個經驗吧。

六、測試(程序截圖)

1.數據輸入及主菜單

2.加法和減法模塊

3.乘法和除法模塊

七、總結

通過本次應用C語言設計一元多項式基本計算程序,使我更加鞏固了C語言程序設計的知識,以前對指針這一點使用是比較模糊,現在通過此次課程設計對指針理解的比較深刻了。而且對于數據結構的相關算法和函數的調用方面知識的加深。本次的課程設計,一方面提高了自己獨立思考處理問題的能力;另一方面使自己再設計開發程序方面有了一定的小經驗和想法,對自己以后學習其他語言程序設計奠定了一定的基礎。

八、指導老師評語及成績

附錄:(課程設計代碼)

#include #include #include typedef struct Polynomial {

float coef;6

int expn;

struct Polynomial *next;} *Polyn,Polynomial;

//Polyn為結點指針類型 void Insert(Polyn p,Polyn h){

if(p->coef==0)free(p);

//系數為0的話釋放結點

else

{

Polyn q1,q2;

q1=h;q2=h->next;

while(q2&&p->expnexpn)//查找插入位置

{

q1=q2;q2=q2->next;}

if(q2&&p->expn==q2->expn)//將指數相同相合并 {

q2->coef+=p->coef;

free(p);

if(!q2->coef)//系數為0的話釋放結點

{ q1->next=q2->next;free(q2);}

}

else { p->next=q2;q1->next=p;

}//指數為新時將結點插入

} 7

} //建立一個頭指針為head、項數為m的一元多項式 Polyn Create(Polyn head,int m){

int i;

Polyn p;

p=head=(Polyn)malloc(sizeof(struct Polynomial));

head->next=NULL;

for(i=0;i

{

p=(Polyn)malloc(sizeof(struct Polynomial));//建立新結點以接收數據

printf(“請輸入第%d項的系數與指數:”,i+1);

scanf(“%f %d”,&p->coef,&p->expn);

Insert(p,head);

//調用Insert函數插入結點

}

return head;} //銷毀多項式p void Destroy(Polyn p){

Polyn q1,q2;

q1=p->next;8

q2=q1->next;

while(q1->next)

{

free(q1);

q1=q2;//指針后移

q2=q2->next;

} } //輸出多項式p int Print(Polyn P){

Polyn q=P->next;

int flag=1;//項數計數器

if(!q)//若多項式為空,輸出0

{

putchar('0');

printf(“n”);

return;

}

while(q)

{

if(q->coef>0&&flag!=1)putchar('+');//系數大于0且不是第一項 9

if(q->coef!=1&&q->coef!=-1)//系數非1或-1的普通情況

{

printf(“%g”,q->coef);

if(q->expn==1)putchar('X');

else if(q->expn)printf(“X^%d”,q->expn);

}

else

{

if(q->coef==1){

if(!q->expn)putchar('1');

else if(q->expn==1)putchar('X');

else printf(“X^%d”,q->expn);}

if(q->coef==-1){

if(!q->expn)printf(“-1”);

else if(q->expn==1)printf(“-X”);

else printf(“-X^%d”,q->expn);}

}

q=q->next;

flag++;

}

printf(“n”);} int compare(Polyn a,Polyn b){

if(a&&b)

{

if(!b||a->expn>b->expn)return 1;

else if(!a||a->expnexpn)return-1;

else return 0;

}

else if(!a&&b)return-1;//a多項式已空,但b多項式非空

else return 1;//b多項式已空,但a多項式非空 } //求解并建立多項式a+b,返回其頭指針 Polyn Add(Polyn pa,Polyn pb){

Polyn qa=pa->next;

Polyn qb=pb->next;

Polyn headc,hc,qc;

hc=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點 11

hc->next=NULL;

headc=hc;

while(qa||qb){

qc=(Polyn)malloc(sizeof(struct Polynomial));

switch(compare(qa,qb))

{

case 1:

qc->coef=qa->coef;

qc->expn=qa->expn;

qa=qa->next;

break;

case 0:

qc->coef=qa->coef+qb->coef;

qc->expn=qa->expn;

qa=qa->next;

qb=qb->next;

break;

case-1:

qc->coef=qb->coef;

qc->expn=qb->expn;

qb=qb->next;

break;12

}

if(qc->coef!=0)

{

qc->next=hc->next;

hc->next=qc;

hc=qc;

}

else free(qc);//當相加系數為0時,釋放該結點

}

return headc;} //求解并建立多項式a-b,返回其頭指針 Polyn Subtract(Polyn pa,Polyn pb){

Polyn h=pb;

Polyn p=pb->next;

Polyn pd;

while(p)//將pb的系數取反

{ p->coef*=-1;p=p->next;}

pd=Add(pa,h);

for(p=h->next;p;p=p->next)

//恢復pb的系數

p->coef*=-1;13

return pd;} //求解并建立多項式a*b,返回其頭指針 Polyn Multiply(Polyn pa,Polyn pb){

Polyn hf,pf;

Polyn qa=pa->next;

Polyn qb=pb->next;

hf=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點

hf->next=NULL;

for(;qa;qa=qa->next)

{

for(qb=pb->next;qb;qb=qb->next)

{

pf=(Polyn)malloc(sizeof(struct Polynomial));

pf->coef=qa->coef*qb->coef;

pf->expn=qa->expn+qb->expn;

Insert(pf,hf);//調用Insert函數以合并指數相同的項

}

}

return hf;}

//求解并建立多項式a/b,返回其頭指針 void Device(Polyn pa,Polyn pb){

Polyn hf,pf,temp1,temp2;

Polyn qa=pa->next;

Polyn qb=pb->next;

hf=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點,存儲商

hf->next=NULL;

pf=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點,存儲余數

pf->next=NULL;

temp1=(Polyn)malloc(sizeof(struct Polynomial));

temp1->next=NULL;

temp2=(Polyn)malloc(sizeof(struct Polynomial));

temp2->next=NULL;

temp1=Add(temp1,pa);

while(qa!=NULL&&qa->expn>=qb->expn)

{

temp2->next=(Polyn)malloc(sizeof(struct Polynomial));

temp2->next->coef=(qa->coef)/(qb->coef);

temp2->next->expn=(qa->expn)-(qb->expn);

Insert(temp2->next,hf);

pa=Subtract(pa,Multiply(pb,temp2));15

qa=pa->next;

temp2->next=NULL;

}

pf=Subtract(temp1,Multiply(hf,pb));

pb=temp1;

printf(“商是:”);

Print(hf);

printf(“余數是:”);

Print(pf);} void main(){ int choose=1;int m,n,flag=0;system(“Color E0”);Polyn pa=0,pb=0,pc,pd,pf;//定義各式的頭指針,pa與pb在使用前付初值NULL printf(“請輸入A(x)的項數:”);scanf(“%d”,&m);printf(“n”);pa=Create(pa,m);//建立多項式A printf(“n”);printf(“請輸入B(x)的項數:”);16

scanf(“%d”,&n);printf(“n”);pb=Create(pb,n);//建立多項式B printf(“n”);printf(“**********************************************n”);printf(“*

多項式操作菜單

printf(”**********************************************n“);printf(”tt 1.輸出操作n“);printf(”tt 2.加法操作n“);printf(”tt 3.減法操作n“);printf(”tt 4.乘法操作n“);printf(”tt 5.除法操作n“);printf(”tt 6.退出操作n“);printf(”**********************************************n“);while(choose){

printf(”執行操作:“);

scanf(”%d“,&flag);

switch(flag)

{

case 1:

printf(”多項式A(x):“);Print(pa);*n”);

printf(“多項式B(x):”);Print(pb);

break;

case 2:

pc=Add(pa,pb);

printf(“多項式A(x)+B(x):”);Print(pc);

Destroy(pc);break;

case 3:

pd=Subtract(pa,pb);

printf(“多項式A(x)-B(x):”);Print(pd);

Destroy(pd);break;

case 4:

pf=Multiply(pa,pb);

printf(“多項式A(x)*B(x):”);

Print(pf);

Destroy(pf);

break;

case 5:

Device(pa,pb);18

break;

case 6:

exit(0);

break;

} }

Destroy(pa);

Destroy(pb);}

第三篇:數據結構課程設計

數據結構課程設計

1.赫夫曼編碼器

設計一個利用赫夫曼算法的編碼和譯碼系統,重復地顯示并處理以下項目,直到選擇退出為止。要求:

1)將權值數據存放在數據文件(文件名為data.txt,位于執行程序的當前目錄中)

2)初始化:鍵盤輸入字符集大小26、26個字符和26個權值(統計一篇英文文章中26個字母),建立哈夫曼樹;

3)編碼:利用建好的哈夫曼樹生成哈夫曼編碼;

4)輸出編碼(首先實現屏幕輸出,然后實現文件輸出); 5)界面優化設計。

代碼如下:

#include #include #include #include #define N 200

typedef struct HTNode

//結構體 { int Weight;

char ch;int Parent,Lchild,Rchild;}HTNode;typedef char * * HCode;

void Save(int n,HTNode *HT)

//把權值保存到文件 {

FILE * fp;

int i;

if((fp=fopen(“data.txt”,“wb”))==NULL)

{

printf(“cannot open filen”);

return;

}

for(i=0;i

if(fwrite(&HT[i].Weight,sizeof(struct HTNode),1,fp)!=1)

printf(“file write errorn”);

fclose(fp);

system(“cls”);

printf(“保存成功!”);

}

void Create_H(int n,int m,HTNode *HT)

//建立赫夫曼樹,進行編碼 {

int w,k,j;char c;for(k=1;k<=m;k++){

if(k<=n)

{

printf(“n請輸入權值和字符(用空格隔開): ”);

scanf(“%d”,&w);

scanf(“ %c”,&c);HT[k].ch=c;

HT[k].Weight=w;

}

else HT[k].Weight=0;

HT[k].Parent=HT[k].Lchild=HT[k].Rchild=0;}

int p1,p2,w1,w2;

for(k=n+1;k<=m;k++){

p1=0;p2=0;

w1=32767;w2=32767;

for(j=1;j<=k-1;j++)

{

if(HT[j].Parent==0)

{

if(HT[j].Weight

{

w2=w1;p2=p1;

w1=HT[j].Weight;

p1=j;

}

else if(HT[j].Weight

{

w2=HT[j].Weight;

p2=j;

}

}

} HT[k].Lchild=p1;HT[k].Rchild=p2;HT[k].Weight=HT[p1].Weight+HT[p2].Weight;

HT[p1].Parent=k;HT[p2].Parent=k;

} printf(“輸入成功!”);}

void Coding_H(int n,HTNode *HT)

//對結點進行譯碼 { int k,sp,fp,p;char *cd;HCode HC;

HC=(HCode)malloc((n+1)*sizeof(char *));

cd=(char *)malloc(n*sizeof(char));cd[n-1]='

主站蜘蛛池模板: 曰欧一片内射vα在线影院| 狠色狠色狠狠色综合久久| 精品无码一区二区三区亚洲桃色| 国模冰莲极品自慰人体| 国产精品美女久久久久av爽李琼| 中国成熟妇女毛茸茸| 十八禁无码精品a∨在线观看| 久久99国产精品久久99软件| 久久人人97超碰爱香蕉| 60岁欧美乱子伦xxxx| 一区二区三区中文字幕| 性色av闺蜜一区二区三区| 国产精品久久久久9999小说| 亚洲国产成人极品综合| 国产成人亚洲综合无码品善网| 久久嫩草影院免费看| 国产丶欧美丶日本不卡视频| 久久午夜无码鲁丝片午夜精品| 久久不见久久见www电影免费| 午夜男女很黄的视频| 亚洲七久久之综合七久久| 少妇人妻精品一区二区| 亚洲男人的天堂av手机在线观看| 亚洲精品无码久久久久不卡| 无码国产精品一区二区免费模式| 国产亚洲日韩网曝欧美台湾| 国产乱码字幕精品高清av| 97资源共享在线视频| 无码国产成人午夜电影观看| 日韩va中文字幕无码电影| 337p粉嫩日本欧洲亚洲大胆| 国产av无码久久精品| 边添小泬边狠狠躁视频| 久久久久亚洲精品天堂| 欲色影视天天一区二区三区色香欲| 亚洲精品无码你懂的网站| 色综合久久无码中文字幕| 久热re这里精品视频在线6| 精品国产一区二区三区色欲| 亚洲性夜夜天天天| av国产剧情md精品麻豆|