程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 實驗二 伸展樹算法設計與實現,實驗伸展樹算法

實驗二 伸展樹算法設計與實現,實驗伸展樹算法

編輯:C++入門知識

實驗二 伸展樹算法設計與實現,實驗伸展樹算法


一、實驗名稱:伸展樹算法設計與實現

二、實驗目的:

1.掌握伸展樹的數據結構。

2.掌握伸展算法的實現。

三、實驗內容

完善下列程序,並回答問題。

 1 #include <iostream.h>
 2 enum ResultCode{Underflow, Overflow, Success, Duplicate, Fail, NotPresent};
 3 template<class T>
 4 struct BTNode
 5 {//二叉樹結點類
 6     BTNode(const T& x){    element=x; lChild=rChild=NULL;     }
 7     T element;
 8     BTNode* lChild,*rChild;
 9 };
10 template<class T>
11 class SPTree 
12 {//伸展樹類
13 public:
14     SPTree(){root=NULL;}
15     ResultCode Insert(T x);
16     void printTree(){cout<<"該樹的邊分別為:"<<endl;  printTree(root);};
17     void printTree( BTNode<T>* &p){
18         if(p == NULL) return;
19         if(p->lChild != NULL){
20             cout<<"    從"<<p->element<<"到"<<p->lChild->element<<endl;
21             printTree(p->lChild);
22         }
23         if(p->rChild != NULL){
24             cout<<"    從"<<p->element<<"到"<<p->rChild->element<<endl;
25             printTree(p->rChild);
26         }
27     };
28     void printTree(int level){cout<<"該樹為:";  printTree(root, level); cout<<endl;};
29     void printTree( BTNode<T>* &p, int level){
30         if(p == NULL) return;
31         if(p->lChild != NULL){
32             printTree(p->lChild, level+1);
33         }
34         cout<<endl;
35         for(int i = 0; i<level; i++) cout<<"   ";
36         cout<<p->element;
37         if(p->rChild != NULL){
38             printTree(p->rChild, level+1);
39         }
40     };
41 protected:
42     BTNode<T>* root;
43 private:
44     ResultCode Insert(BTNode<T>* &p, T x);
45     void  LRot(BTNode<T>* &p);
46     void  RRot(BTNode<T>* &p);
47 };
48  
49 template <class T>
50 void SPTree<T>::LRot(BTNode<T>*& p)
51 { //實現向左旋轉 
52     學生自己書寫部分
53 }
54 template <class T>
55 void SPTree<T>::RRot(BTNode<T>*& p)
56 { //實現向右旋轉
57     學生自己書寫部分
58 }
59  
60 template <class T>
61 ResultCode SPTree<T>::Insert(T x)
62 {
63     return Insert(root, x);
64 }
65 template <class T>
66 ResultCode SPTree<T>::Insert(BTNode<T>* &p, T x)
67 {
68     學生自己書寫部分
69 }
70 
71 void main(){
72     SPTree<int> tree;
73     int ele[30] = {75,89,72,42,18,25,99,90,17,33};
74     int n = 10;
75     for(int i = 0; i < n; i++) tree.Insert(ele[i]);
76     cout<<"---伸展樹程序---"<<endl<<endl;
77     cout<<"依次插入的數為:";
78     for(int j = 0; j < n; j++) cout<<ele[j]<<",";
79     tree.printTree();
80     tree.printTree(0);
81 }

 

        程序問題:

 

四、實驗小結和心得

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved