久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1763|回復: 0
打印 上一主題 下一主題
收起左側

數據結構實驗報告

[復制鏈接]
跳轉到指定樓層
樓主
ID:426590 發表于 2018-11-14 19:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
《數據結構與算法》
上 機 實 驗 報 告
(請雙面打印)
實驗內容          二叉樹的基本操作         
      BinarySearch Tree的建立與遍歷  
指導教師        
上機日期                                
      信息與通信工程學院   
學生姓名                       
                 
                           
                                 
指導老師簽字                          

《數據結構與算法》上機實驗
  
題目
  
順序表與單鏈表的基本操作
主要
  
內容
1.        熟悉VC6.0編程環境;
  
2.       掌握Binary Search Tree的基本特性,掌握二叉樹的遍歷方法;
  
3.        加深對二叉樹的理解,逐步培養解決問題的編程能力。
設計
  
要求
參考給定的程序,實現Binary Search Tree的建立與遍歷。要求如下:
  
1.        數據結點不少于10;
  
2.        數據中不要包括重復的數據;
  
3.        請數據結點保存在數組中,依次插入數據;
  
4.        二叉樹的存儲結構為二叉鏈表;
  
5.        對二叉樹進行先序遍歷并在屏幕上輸出該序列;
  
6.        對二叉樹進行中序遍歷并在屏幕上輸出該序列;
  
7.        對二叉樹進行后序遍歷并在屏幕上輸出該序列;
  
  
提示:
  
1.        參考課本P10;
  
2.        先序、中序、后序遍歷可參考PPT6.3 章第8頁。
  
  
提高選做:
  
1.    實現查找函數。
  
主要
  
儀器
  
設備
裝有Visual  C++6.0或Visual Studio 2010的計算機一臺。
主要
  
參考
  
文獻
[1]   嚴蔚敏, 吳偉民. 數據結構 (C語言版) [M]. 北京: 清華大學出版社, 2015.
  
[2]  譚浩強. 《C語言程序設計》(第二版)[M].北京: 清華大學出版社, 2005.
上機實驗進度計劃(起止時間、工作內容)
本次上機實驗共4學時。
上機日期
2017.10.24
上機實驗實驗室名稱
計算中心-D機房

一、請簡單手寫出二叉樹的條性質
請預留足夠多的空白,打印之后再手寫。
1.     二叉樹的第k層最多有___________個結點;
2.     深度為k的二叉樹最多有_________個結點;
3.     請簡要證明二叉樹的第3條性質;
二、上機程序與問題
請將原程序、各個問題的答案寫在程序中,并直接拷在此處。
#include<stdlib.h>
#include<stdio.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElementType; //?  
typedef int Status; //?      
typedef struct TreeNode* Position; //?       用Position代替TreeNode*,實現結構體指針
typedef struct TreeNode* BSTree; //?         用BSTree代替TreeNode*,實現結構體指針
// 下面幾句話的作用是什么?
struct TreeNode{
        ElementType Element;//?      定義一個整形變量Element
        struct TreeNode* Left;//?      創建一個指向左支路的指針
        struct TreeNode* Right;
};
// 問題: 簡述下述函數的功能,并指出輸入和輸出分別是什么?
BSTree Insert(ElementType X, BSTree T){
        if (T==NULL){
        // 問題:本部分的作用?      判斷T指針是否有指向的內存空間,若沒有則分配
                 T=(BSTree)malloc(sizeof(structTreeNode)); //?   給指針T分配空間
                 if (T==NULL)
                         exit(OVERFLOW);//?      異常中止
                 else{
                         T->Element=X;
                         T->Left=NULL;
                         T->Right=NULL;
                 }
        }
        else{
                 // 問題:本部分的作用?       根據傳進來的參數,決定左支路或者右支路
                 if(X<T->Element)
                         T->Left=Insert(X,T->Left);//?       給T加一個左支路
                 else if(X>T->Element)
                         T->Right=Insert(X,T->Right);
        }
        return T; // 請問:返回的T代表什么意思?    樹的節點   
}
void Traverse (BSTree T)//先序遍歷
{
        if(T)
        {
                 printf("%d  ",T->Element);
                 Traverse(T->Left);
                 Traverse(T->Right);
        }
}
void zhong (BSTree T)//中序遍歷
{
        if(T)
        {
                 zhong(T->Left);
                 printf("%d  ",T->Element);
                 zhong(T->Right);
        }
}
void hou(BSTree T)//后序遍歷
{
        if(T)
        {
                 hou(T->Left);
                 hou(T->Right);
                 printf("%d  ",T->Element);
        }
}
void main()
{
        int seq[10]={35, 27,19, 0, 32, 12, 87, 26, 5, 41}; // 輸入序列數據
        BSTree T=NULL; //?     創建一個結構體指針T
        // 下面這3句話產生的效果是什么?     按照Insert函數分配支路
        for (int i=0; i<10;i++){
        T=Insert(seq, T);
        }
        printf("\n先序遍歷輸出序列為:\n");
        // 先編子程序,然后在這里調用子程序,實現二叉樹的先序遍歷
        Traverse(T);
        printf("\n中序遍歷輸出序列為:\n");
        // 先編子程序,然后在這里調用子程序,實現二叉樹的中序遍歷
        zhong(T);
        printf("\n后序遍歷輸出序列為:\n");
        // 先編子程序,然后在這里調用子程序,實現二叉樹的后序遍歷
        hou(T);
        // 提高題(不要求同學必須完成):
        // 如果以上程序均已完成,嘗試寫出Find函數
        // Find函數實現的功能是:在上述二叉樹T中查找某個數X,如果查找成功,則返回X的地址;否則,返回NULL;
        //先編子程序,然后在這里調用子程序,輸出返回的地址
}
                              
if(T==NULL)
printf(0):
else if(T->Element==X)
printf(sd,D);
else if (X< T->Element)
find(Xx,T->Left);
else
find(X,T->Right):
return 0;
void main()
{
int seq[10]={ 35,27,19,0,32,12,87,26,5,41};
BSTree T=NULL;
for(int i=0;i< 10;i++){
T=Insert(seq,T);//將數字填入二叉樹
printf("\n先序遍歷輸出序列為:\n");
Traverse(T);//調用子程序,實現叉樹的先序遍歷
printf("\n中序遍歷輸出序列為:\n");
zhong(T);//調用子程序,實現叉樹的中序遍歷
printf("\n后序遍歷輸出序列為:\n");
hou(T);//調用子程序,實現二叉樹的后序遍歷
int X;
printf("n輸入要查找的數:");
scanf("%d",&X);
find(x,T);
}
三、結果
1. 畫出你的二叉樹,寫出你的先序、中序、后序遍歷結果。
2. 貼出你的實驗結果。注意:圖片要有圖標和圖題,圖片處理一下,避免大片的黑色。
3. 從程序上看,如果數據中有重復的數據,程序是怎么處理的?

四、遇到的問題、解決方法與個人心得。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片毛片 | 欧美精品综合在线 | 亚洲不卡在线观看 | 国产一级视频在线 | 81精品国产乱码久久久久久 | 一区二区久久电影 | 青青草久久| 一区二区三区四区在线 | 一区在线观看 | 99re99| 久久久久久国产精品mv | 综合久 | 亚洲精品视频一区二区三区 | 精品一区二区三区四区五区 | 亚洲综合国产精品 | 日韩最新网站 | 免费在线观看成年人视频 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 99re视频在线 | 色综久久 | 国产激情视频网址 | 久久国产精品免费视频 | 国产成人区 | 日日夜夜精品视频 | 日韩在线中文字幕 | hitomi一区二区三区精品 | 中文字幕av亚洲精品一部二部 | 亚洲精品久久久久久首妖 | 久久国产一区二区三区 | 欧美日韩成人影院 | 国产精品成av人在线视午夜片 | h在线| 中文字幕免费在线观看 | 国产精品毛片一区二区三区 | 日韩精品在线网站 | 国产精品一二三区在线观看 | 免费一级黄色录像 | 国产日韩欧美一区二区 | 日屁视频 | 在线视频一区二区三区 | 九一在线观看 |