數據結構筆記與總結

   1,程序=數據結構+算法。

2,存儲結構分爲順序存儲與鏈式存儲。

3,模板

寫模板是一定加一個前綴

template<class T> 

class可換typename      T可換任意名稱

模板函數     一定注意返回值與傳過來的參數是否是需要被參數化的 

template<class T>
T max(T a,T b){
  if(a>b)
   return a;
else
return b;
}

 類模板  注意定義和使用方法

 

template<class T>

class 類名稱{}

template<class T>

類名稱<T>::類名稱()//構造函數

T 類名稱<T>::函數名稱()//返回值需要被參數化的類成員函數

 

 

int main(){

類名<類型名如int> a;

4,順序表

物理存儲數據相鄰關係,反應元素之間的邏輯關係;

5,鏈式存儲結構及實現(動態申請)

用模板一定實例化

node<T> *s;

創建鏈表的兩種方法:

template <class T>
class LinkList { 
  public: 
  LinkList ( ) {first=new Node<T>; first -> next= NULL ;}
     LinkList ( T a[ ], int n ) ; 
  ~LinkList ( ) ; 
  int Length ( ) ;
  T Get ( int i ) ; 
  int Locate ( T x ) ;
  void Insert ( int i, T x ) ;
  T Delete ( int i ) ; 
  void PrintList ( ) ; 
  private: 
  	Node<T>  *first; // 單鏈表的頭指針  , <T>可以省略
}; 

頭插法:

template <class T>  
LinkList<T>:: LinkList(T a[ ], int n) {
    first=new Node<T>;   //生成頭結點
   first->next=NULL;
   Node<T> *s;
   for (int i=0; i<n; i++){ 
          s=new Node<T>; 
          s->data=a[i];  //爲每個數組元素建立一個結點
          s->next=first->next;
          first->next=s;
	}
}

尾插法

template <class T>  
LinkList<T>:: LinkList(T a[ ], int n) {
    Node<T> *r,*s;      //尾指針
    first=new Node<T>;   //生成頭結點
	r=first;          
    for (int i=0; i<n; i++)	{ 
        s=new Node<T>; 
        s->data=a[i];  //爲每個數組元素建立一個結點
        r->next=s; r=s;      //插入到終端結點之後
	}
    r->next=NULL;    //單鏈表建立完畢,將終端結點的指針域置空
 }

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章