資料結構實驗

2021-04-22 10:33:29 字數 2112 閱讀 5850

一、實驗目的

1、了解二叉樹的定義及基本運算。

2、掌握二叉樹的描述方法、特點、性質及儲存結構。

3、掌握二叉樹的基本操作演算法。

4、自主設計二叉樹建立、遍歷等操作的整個程式。

二、實驗內容

根據建立任意給定的二叉樹,並對此二叉樹進行前序、中序、後序、層次四種遍歷。

基本要求:

1) 具有二叉樹的建立功能;

2) 可以進行二叉樹的四種方式的遍歷,遍歷方式可由使用者選擇,遍歷結果;

3) 可統計二叉樹中葉子結點、度位2的結點個數及總結點數;

4) 可在二叉樹中查詢某一元素;

5) 通過鍵盤可以建立任意給定的二叉樹,並能完成以上操作控制。

5)自己編寫、除錯所有功能函式程式。

三、程式設計思路

用鏈式儲存結構建立乙個二叉樹,將二叉樹分為根結點、左子樹和右子樹三部分建立。

二叉樹的遍歷是指按照某種順序訪問二叉樹中的每個結點,使每個結點被訪問一次且只被訪問一次。常用的二叉樹遍歷方法如下:

前序遍歷:訪問次序:根→左→右,

中序遍歷:訪問次序:左→根→右,

後序遍歷:訪問次序:左→右→根

層次遍歷:訪問次序:從上到下、從左到右一層一層進行

可按如下格式定義二叉樹的鏈式儲存結構:

typedef char datatype;

typedef struct bitnode

bitnode,*bitree;

模組劃分:

1)void createbintree(bitree *t):以遞迴方式建立二叉樹;

2)void preorder(bitree bt)函式:前序遍歷函式;

3)void inorderout(bitree t)函式:中序遍歷函式;

4)void postorder(bitree bt)函式:後序遍歷函式;

5)void levelorder(bitree bt)函式:層次遍歷函式;

6)int allnode(bitree root)函式:計算總結點個數函式;

7)bitree search(bitree bt, datatype x)函式:查詢函式;

8)int n2(bitree bt)函式:計算度為2結點個數函式;

9)int countleaf(bitree bt)函式:計算葉子結點個數函式。

四、部分參考源程式段

#include

#include

#define maxnode 10

typedef char datatype;

typedef struct bitnode

bitnode,*bitree;

void createbintree(bitree *t) // 以遞迴方式建立二叉樹

}/*bitree createbintree(bitree t) // 以遞迴方式建立二叉樹

return(t);

}*/void preorder(bitree bt)

void inorderout(bitree t)

void postorder(bitree bt)

void levelorder(bitree bt)

if(queue[front]->rchild!=null)

rear++; queue[rear]=queue[front]->rchild; }

}}int allnode(bitree root)

bitree search(bitree bt, datatype x)

if ( bt->rchild != null)

p=search(bt->rchild,x);

if(p) return p; }

}return null;

}/*int n=0;//設計一演算法,統計二叉樹中度為2的結點總數

void n2(bitree bt )

}*/int n2(bitree bt)

int countleaf(bitree bt)

void main( )

if(sel==2)

if(sel==4)

{printf("後序為:");

postorder(bt);

printf("\n");

資料結構實驗

資訊23 2120502060 古碧野一 實驗題目 建立乙個線性表,實現線性表的建立,插入,刪除和遍歷 二.實驗目的和要求 實驗目的 熟練掌握線性表的基本操作在順序儲存結構上的實現。實驗要求 用c語言編寫源程式,並除錯通過,測試正確。三.主要儀器裝置 windows xp操作平台,visual c ...

資料結構實驗

一 實驗題目編寫乙個程式實現雙鏈隊的各種基本運算,並在此基礎上設計乙個主程式完成如下功能 1 初始化鏈隊q 2 判斷鏈隊q是否為空 3 依次進隊元素a,b,c 4 出隊乙個元素,輸出該元素 5 輸出鏈隊q的元素個數 6 依次進鏈隊元素d,e,f 7 輸出鏈隊q的元素個數 8 輸出出隊序列 9 釋放鏈...

《資料結構》實驗

資料結構與演算法 第1次實驗題目及要求 實驗一 線性表 佇列與棧及其操作演算法 一 實驗內容 1 建立包括頭結點和3個結點 4,2,1 的單鏈表,實現單鏈表建立 插入 刪除和順序查詢等基本操作。2 程式設計用一維陣列來模擬乙個棧,實現入棧和出棧操作,解決括號匹配問題。3 程式設計用一維陣列來模擬乙個...