数据结构笔记与总结

   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;    //单链表建立完毕,将终端结点的指针域置空
 }

 

 

 

 

 

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