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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1709|回復: 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. 從程序上看,如果數據中有重復的數據,程序是怎么處理的?

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

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av电影院 | 久久国产电影 | 国产乱码精品一区二三赶尸艳谈 | 国产在线视频三区 | 日韩在线欧美 | 亚洲91精品| 久久成人国产精品 | 免费色网址| 日日骚网| 国产美女自拍视频 | 欧美日韩成人影院 | 一区二区三区四区在线视频 | 91麻豆精品国产91久久久久久 | 国产精品不卡一区 | av中文字幕在线播放 | 亚洲精品1区2区3区 91免费看片 | 亚洲 中文 欧美 日韩 在线观看 | 免费能直接在线观看黄的视频 | 亚洲 自拍 另类 欧美 丝袜 | 欧美日韩精品亚洲 | 成人夜晚看av | 九九精品网 | 一级片在线观看视频 | 欧美精品一区二区在线观看 | 久久高清国产 | 高清一区二区视频 | 国产精品一区二区三区在线 | 黄色av一区 | 精品一区二区观看 | 国产一区 | 人人干在线| 成人一区二区三区 | www网站在线观看 | 国产精品高潮呻吟久久 | 国产区精品在线观看 | 欧美日韩成人在线 | 成人久久一区 | 中文字幕欧美一区 | 中文字幕在线一区二区三区 | 伊人电影院av | 亚洲一一在线 |