第一篇:數(shù)據(jù)結構-實驗報告-實驗六-框架-A3版.
合 肥 學 院 學 生 實 驗 報 告 專業(yè) 計算機科學與技術 姓名 學號 實驗日期 2010年 4月 13實驗地點 成績 實驗題目 實驗六 — 程序設計題 3 問題分析 本題用棧進行運算比較簡單,因此需要定義判斷棧是否為空,將數(shù)據(jù)入 棧,取棧頂元素,出棧元素。概要設計 int 型數(shù)據(jù) 堆棧型指針 int 型數(shù)據(jù)用來存儲數(shù)據(jù),堆棧型指針用來指向下一個結構體;然 后 設 計 建 棧 函 數(shù) linkstack* set(, 同 時 還 要 有 數(shù) 據(jù) 入 棧 函 數(shù) linkstack* push(linkstack *k,int a,出棧函數(shù),判斷棧是否為空函數(shù) int empty(linkstack *k,取棧頂函數(shù) int gettop(linkstack *k。
通過在主函數(shù)中調用對棧操作的這些函數(shù),完成對數(shù)據(jù)進制的轉換。測試數(shù)據(jù):將 9分別轉換成 2-9等不同進制輸出。詳細設計
linkstack* set(//建立空堆棧 { linkstack *l;//定義堆棧類指針 l=NULL;//將指針付為空值 返回棧 l;}
linkstack* push(linkstack *k,int a//向堆 棧中插入數(shù)據(jù) { linkstack *l;//建立棧指針
l=(linkstack*malloc(sizeof(linkstack;/申請地址 l->data=a;向棧的數(shù)據(jù)域賦值 l 的指針域指向下一個結構體 k=l;返回堆棧 k;} int empty(linkstack *k//判斷堆棧是否為空 { if(k==NULL//如果堆棧為空 return 1;//返回 1 else//否則 return 0;//返回 0 } int gettop(linkstack *k//取棧頂元素 { return k->data;//返回棧頂元素
} 詳細設計 … … … …
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … void main(//主函數(shù)
{ linkstack *m;//定義堆棧指針 int a,b,c;//定義整型變量 m=set(;調用建棧函數(shù)建棧 printf(“t請 輸 入 要 轉 換 的 數(shù) 字 :nt”;scanf(“%d”,&a;輸入要轉換的數(shù) printf(“t請輸入要轉換成多少進制(范 圍 2-9:nt”;scanf(“%d”,&c;while(a如果 a 不為 0 { b=a%c;//求余
m=push(m,b;a=a/c;
} printf(“t該數(shù)的 %d進制表示為:”,c;while(!empty(m//如果不為空 { printf(“%d ”,gettop(m;//輸出棧 頂元素
m=pop(m;//棧頂元素出棧 }
printf(“nt”;} 指導教師:日期:年 月 日 合 肥 學 院 學 生 實 驗 報 告
函數(shù)的返回的類型與接收函數(shù)值的變量類型不對,不能正常編譯。程序結果如下圖所示:
該軟件按為在 dos 下運行的軟件,第一步提示用戶輸入要轉換的數(shù)據(jù);輸入數(shù)據(jù)后,會提示輸入要轉換成多少進制的數(shù);然后就會輸出結果。
教師簽字: 日期: 年 月 日
測試結果 調試分析 操作說明
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … …
第二篇:數(shù)據(jù)結構實驗六報告
實驗六報告
課程名稱: 數(shù)據(jù)結構 實驗名稱:二叉樹的應用
實驗日期
2011/11/23
一、實驗目的:
掌握赫夫曼二叉樹的建立及赫夫曼編碼的生成。
二、實驗內容與要求:
根據(jù)給定的n個權值生成赫夫曼二叉樹,輸出赫夫曼編碼。
三、數(shù)據(jù)結構設計
順序表的存儲結構,建立了二叉樹的關系
Struct HTNode{
int weight;
unsigned int parent,lchild,rchild;};
四、算法設計
1、從數(shù)據(jù)中選擇較小的兩個數(shù)據(jù)元素
void Select(HTNode *HT, const int n, int &a, int &b){ //選擇較小的兩個元素
} int x,y;
x=y=0x7fff;for(int j=0;j if(HT[j].parent==0) if(HT[j].weight 2、建立赫夫曼樹 void CreatHuff(HTNode *HT,int *p,const int n){ } int m=2*n-1;int i,a,b;for(i=0;i Select(HT ,i,a,b);HT[a].parent=HT[b].parent=i;HT[i].weight=HT[a].weight+HT[b].weight;HT[i].lchild=a;HT[i].rchild=b;} 3、生成赫夫曼編碼 void HuffCoding(HTNode *HT, Huffcode &HC, const int n){ // }HC=new char*[n+1]; char *code=new char[n];code[n-1]='