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; //單鏈表建立完畢,將終端結點的指針域置空
}