厦门理工C语言实验报告8,厦门理工c语言数据结构实验
《廈門理工c語言數據結構實驗》由會員分享,可在線閱讀,更多相關《廈門理工c語言數據結構實驗(15頁珍藏版)》請在人人文庫網上搜索。
1、數據結構實驗報告 實驗序號:6 實驗項目名稱:樹和二叉樹的操作 學 號 姓 名專業、班實驗地點指導教師實驗時間一、實驗目的及要求 1、進一步掌握指針變量、動態變量的含義。 2、掌握二叉樹的結構特征,以及各種存儲結構的特點及適用范圍。 3、掌握用指針類型描述、訪問和處理二叉樹的運算。 4、掌握用二叉樹前序、中序、后序、層次遍歷的方法。 二、實驗設備(環境)及要求 微型計算機; windows 操作系統; Microsoft Visual Studio 6.0集成開發環境。 三、實驗內容與步驟 1根據P129的方法,將a*b-(c+d*e/f)+g)轉化為表達式二叉樹(繪圖),并寫出表達式二叉樹的。
2、前序、中序和后序遍歷順序。 2. 鏈式表表示和實現二叉樹如下: #include #include #define max 50 typedef struct liuyu int data; struct liuyu *lchild,*rchild; test; liuyu *root,*p,*qmax; int sum=0; int m=sizeof(test); void insert_data(int x) /*生成二叉排序樹*/ liuyu *p,*q,*s; s=(test*)malloc(m); s-data=x; s-lchild=NULL; s-rchild=NULL; if(。
3、!root) root=s; p=root; while(p) /*如何接入二叉排序樹的適當位置*/ q=p; if(p-data=x) printf(data already exist! n); return; else if(xdata) p=p-lchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s; void main() /*先生成二叉排序樹*/ int i,x; i=1; root=NULL; /*千萬別忘了賦初值給root!*/ do printf(please input data%d:,i); i+; s。
4、canf(%d,&x); /*從鍵盤采集數據,以-9999表示輸入結束*/ if(x=-9999) printf(Now output data value:n); else */ 調用插入數據元素的函數insert_data(x); /* while(x!=-9999); 改寫以上程序,實現功能如下(任選兩題): 1.編寫函數實現前序、中序和后序遍歷。 運行結果截圖: 2.編寫函數實現計算葉節點個數。 運行結果截圖: 四、分析與討論對上機實踐結果進行分析,上機的心得體會。五、教師評語 簽名: 日期:成績附源程序清單:#include 1. #include typedef int TElem。
5、Type; typedef struct BiTNode TElemType data; struct BiTNode *lchild,*rchild; BiNode, *Bitree; DLR( Bitree root ) if (root !=NULL) /非空二叉樹 D printf(%d,root-data); /訪問 遞歸遍歷左子樹 DLR(root-lchild); / 遞歸遍歷右子樹 DLR(root-rchild); / return(0); LDR(Bitree root) if(root !=NULL) LDR(root-lchild); printf(%d,root-da。
6、ta); LDR(root-rchild); return(0); LRD (Bitree root) if(root !=NULL) LRD(root-lchild); LRD(root-rchild); printf(%d,root-data); return(0); Bitree root;/定義根結點 void insert_data(int x) /*生成/樹*/ Bitree p,q,s; s=(Bitree)malloc(sizeof(BiNode); /創建結點 s-data=x; /結點賦值 s-lchild=NULL; s-rchild=NULL; if(!root) ro。
7、ot=s; else p=root; while(p) /*如何接入二叉排序樹的適當位置*/ q=p; if(p-data=x) /相同結點不能重復插入 printf(data already exist! n); return; else if(xdata) p=p-lchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s; void main() /*先生成二叉排序樹*/ int i=1,x; /i記錄結點個數,x存放結點值 root=NULL; /*千萬別忘了賦初值給root!*/ 牰湩晴尨請輸入數據,-9999表示輸入。
8、結束n); do printf(please input data %d:,i); i+; scanf(%d,&x); /*從鍵盤采集數據,以-9999表示輸入結束*/ if(x=-9999) printf(Now output data value:n); else insert_data(x); /*調用插入數據元素的函數*/ while(x!=-9999); printf(DLR); DLR(root); printf(LDR); LDR(root); printf(LRD); LRD(root); 2. #include #include typedef int TElemType; 。
9、typedef struct BiTNode TElemType data; struct BiTNode *lchild,*rchild; BiNode, *Bitree; Bitree root;/定義根結點 int CountLeaf (Bitree root) /返回指針T所指二叉樹中所有葉子結點個數 int m,n; if (!root ) return 0; if (!root-lchild & !root-rchild) return 1; else m = CountLeaf( root-lchild); n = CountLeaf( root-rchild); return 。
10、(m+n); /else / CountLeaf void insert_data(int x) /*生成/樹*/ Bitree p,q,s; s=(Bitree)malloc(sizeof(BiNode); /創建結點 s-data=x; /結點賦值 s-lchild=NULL; s-rchild=NULL; if(!root) root=s; else p=root; while(p) /*如何接入二叉排序樹的適當位置*/ q=p; if(p-data=x) /相同結點不能重復插入 printf(data already exist! n); return; else if(xdata) 。
11、p=p-lchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s; void main() /*先生成二叉排序樹*/ int i=1,x; /i記錄結點個數,x存放結點值 int sum; root=NULL; /*千萬別忘了賦初值給root!*/ 牰湩晴尨請輸入數據,-9999表示輸入結束n); do printf(please input data %d:,i); i+; */ 表示輸入結束-9999從鍵盤采集數據,以/* scanf(%d,&x); if(x=-9999) printf(Now output data value:n); else insert_data(x); /*調用插入數據元素的函數*/ while(x!=-9999); printf( n葉節點個數=); sum=CountLeaf (root); printf(%dn,sum);。
總結
以上是生活随笔為你收集整理的厦门理工C语言实验报告8,厦门理工c语言数据结构实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot listener_
- 下一篇: 发动机压缩比怎么计算公式_怎么判断发动机