




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據結構實驗報告院系_ 專業 _姓名_林楨曦_ 學號_ _ _級 _班 _年_月_日1 實驗題目(1) 二叉排序樹的基本操作(2) 二叉樹和Huffman樹2 需求分析 (1)編寫二叉排序樹的基本操作函數,調用上述函數實現初始化,插入元素,查找元素,刪除元素等操作。(2)編寫二叉樹的基本操作函數,用遞歸方法分別實現先序,中序和后序遍歷二叉樹。3概要設計ADT tree 數據對象:D=ai|aiIntegerSet,i=0,1,2,n,n0 結構關系:R=|ai,ai+1 D 基本操作: SearchNode(TREE *tree,int key,TREE *pkpt,TREE *kpt) 操作
2、前提:tree是一個已初始化的二叉樹 操作結果:查找樹根結點,鍵值賦給key,并返回key結點的父節點指針和key結點的指針 InsertNode(TREE *tree,int key) 操作前提:tree是一個已初始化的二叉樹 操作結果:將key值插入tree中 DeleteNode(TREE *tree,int key) 操作前提:二叉樹tree已存在 操作結果:將二叉樹中的元素值為key的元素刪除 OutputTree(TREE *tree) 操作前提:二叉樹tree已存在 操作結果:將二叉樹中的元素值輸出 (1) 本程序包含7個函數: 主函數main() 進棧函數pop() 出棧函數p
3、ush() 查找函數SearchNode() 插入函數InsertNode() 刪除函數 DeleteNode()顯示函數 OutputTree()各函數間調用關系如下:主函數調用其他函數mainInsLinkListDelLinkListLocLinkLis(2) 主函數的偽碼main() 定義各個變量;輸入結點個數;For循環輸入元素值;輸出元素值;輸入刪除的元素值;顯示元素值; ADT tree 數據對象:D=ai|aiIntegerSet,i=0,1,2,n,n0 結構關系:R=|ai,ai+1 D 基本操作: CreateBiTree(BiTree &T) 操作前提:T是一個已初始化
4、的二叉樹 操作結果:創建一顆二叉樹 re_PreOrder(BiTree &tree) 操作前提:tree是一個已初始化的二叉樹 操作結果:先序遍歷,遞歸方法 re_MidOrder(BiTree &tree) 操作前提:二叉樹tree已存在 操作結果:中序遍歷,遞歸方法 re_PostOrder(BiTree &tree) 操作前提:二叉樹tree已存在 操作結果:后序遍歷,遞歸方法 本程序包含5個函數: 主函數main() 創建二叉樹函數CreateBiTree() 先序函數re_PreOrder() 中序函數 re_MidOrder() 后序函數re_PostOrder()各函數間調用關
5、系如下:主函數調用其他函數主函數的偽碼main() 定義變量BiTree T;調用CreateBiTree函數;調用 re_PreOrder函數;調用re_MidOrder函數; 調用re_PostOrder函數; 4詳細設計(1) 類型定義typedef struct treeint data;struct tree *lchild;struct tree *rchild;TREE;typedef struct stackTREE *t;int flag;struct stack *link;STACK;typedef struct BiTNodechar data;struct BiTNo
6、de *lchild,*rchild;*BiTree;5調試分析調試時遇到空指針問題,部分值未賦值。6 使用說明7.1首先先輸入結點元素個數,然后按要求輸入元素值,屏幕顯示構造后的樹結構,之后屏幕提示要刪除的元素,按要求輸入之后,屏幕顯示刪除成功,并顯示樹結構。7.2 首先按要求輸入二叉樹的元素值,然后程序調用函數在屏幕顯示先序,中序,后序排序的序列。7 測試結果8. 參考文獻數據結構9附錄#include#include#includetypedef struct treeint data;struct tree *lchild;struct tree *rchild;TREE;typede
7、f struct stackTREE *t;int flag;struct stack *link;STACK;void push(STACK *top,TREE *tree)STACK *p;p=(STACK *)malloc(sizeof(STACK);p-t=tree;p-link=*top;*top=p;void pop(STACK *top,TREE *tree)STACK *p;if(*top=NULL)*tree=NULL;else*tree=(*top)-t;p=*top;*top=(*top)-link;free(p);void SearchNode(TREE *tree,i
8、nt key,TREE *pkpt,TREE *kpt)*pkpt=NULL;*kpt=tree;while(*kpt!=NULL)if(*kpt)-data=key)return;*pkpt=*kpt;if(keydata)*kpt=(*kpt)-lchild;else*kpt=(*kpt)-rchild;int InsertNode(TREE *tree,int key)TREE *p,*q,*r;SearchNode(*tree,key,&p,&q);if(q!=NULL)return 1;if(r=(TREE *)malloc(sizeof(TREE)=NULL) return -1;
9、r-data=key;r-lchild=r-rchild=NULL;if(p=NULL)*tree=r;elseif(p-datakey)p-lchild=r;elsep-rchild=r;return 0;int DeleteNode(TREE *tree,int key)TREE *p,*q,*r;SearchNode(*tree,key,&p,&q);if(q=NULL)if(q-lchild=NULL)*tree=q-rchild;else*tree=q-lchild;r=q-lchild;while(r-rchild!=NULL)r=r-rchild;r-rchild=q-rchil
10、d;elseif(q-lchild=NULL)if(q=p-lchild)p-lchild=q-rchild;elsep-rchild=q-rchild;elser=q-lchild;while(r-rchild!=NULL)r=r-rchild;r-rchild=q-rchild;if(q=p-lchild)p-lchild=q-lchild;elsep-rchild=q-rchild;free(q);return 0;void OutputTree(TREE *tree)STACK *top;int d=0,n=0,m=0;top=NULL;while(tree!=NULL|top!=NU
11、LL)while(tree!=NULL)push(&top,tree);top-flag=+d;if(mlchild;if(top!=NULL)d=top-flag;n+;pop(&top,&tree);printf(%d,tree-data);fflush(stdout);tree=tree-rchild;void main()TREE *t;int i,n,m;t=NULL;printf(請輸入樹結點個數:); scanf(%d,&m);printf(請輸入樹結點元素:);for(i=0;im;i+) scanf(%d,&n);InsertNode(&t,n);printf(樹結構為:n)
12、;OutputTree(t);printf(n請輸入要刪除的樹結點元素:);scanf(%d,&i);DeleteNode(&t,i);printf(刪除成功,樹結構為:n);OutputTree(t);printf(n);#include#includetypedef struct BiTNodechar data;struct BiTNode *lchild,*rchild;*BiTree;void CreateBiTree(BiTree &T)char ch; scanf(%c,&ch); if(ch= )T=NULL; else BiTNode *p=(BiTNode *)malloc
13、(sizeof(BiTNode); T=p; T-data=ch; CreateBiTree(T-lchild); CreateBiTree(T-rchild); void re_PreOrder(BiTree &tree)if(tree) printf(%c ,tree-data); re_PreOrder(tree-lchild); re_PreOrder(tree-rchild); int re_MidOrder(BiTree &tree)if(tree) re_MidOrder(tree-lchild); if(tree-data) printf(%c ,tree-data);re_MidOrder(tree-rchild);return 1;else return 0;int re_PostOrder(BiTree &tree)if(tree) re_PostOrder(tree-lchild); re_PostOrder(tree-rchi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式系統開發常見技術問題試題及答案
- 財務稅務培訓專業指導考核試卷
- 液化石油氣行業環境保護與污染預防考核試卷
- 船舶節能技術與輪渡運輸能效管理考核試卷
- 人工智能助力嵌入式系統優化試題及答案
- 牙膏口味調配與消費者喜好研究考核試卷
- 嵌入式技術在教育中的應用試題及答案
- 生物質燃氣的供應鏈建設與物流管理策略考核試卷
- 數據共享與MySQL安全設置題目及答案
- 數據庫學習路徑試題及答案探討
- 2025年生態環境保護知識測試題及答案
- 2025年山東省聊城市高唐縣中考二模英語試題(原卷版+解析版)
- 企業數字化轉型培訓課件
- 2025屆高考語文押題作文及題目(9篇)
- 2025年中國白楊樹市場現狀分析及前景預測報告
- 2025年湖北省新高考信息卷(三)物理試題及答題
- 2025年廣東省中考地理模擬試卷(含答案)
- 2025-2030年力控玩具項目投資價值分析報告
- 駕駛員心理試題及答案
- 2024年四川省樂山市中考地理試卷 附答案
- 電影你的名字課件
評論
0/150
提交評論