[C++]线性链表之单链表

[文档整理系列] 线性链表之单链表

/*
问题描述:线性表____链表_____单链表 
@date 2017-3-7 
*/ 

#include<iostream>
using namespace std;

template<typename T>
struct node{
	T data;
	node<T> *next;
};

template<typename T>
class LinkedList{
    public:
    	LinkedList();    
		LinkedList(T arr[],int n);  
		~LinkedList();   
		int getLength();  
		void InsertAt(int n,T data);  
		T DeleteAt(int i);     

		T   GetData(int i);      
		int getDataAt(T data);   
		void Print(); 
	private:
	    int length;
		node<T> *first;   
};

template <class T>  
LinkedList<T>::LinkedList(){
    first = new node<T>;
	first->next = NULL;    
	length = 0;	
} 

template <class T>  
LinkedList<T>::LinkedList(T arr[],int n){
    first = new node<T>();   //初始化指针变量  
    first->next = NULL;     
    
    for(int i = 0;i<n;i++){
    	node<T> s;
    	s.data = arr[i];
    	s.next = first->next;
    	first->next = &s;
	}
	
    length = n;
	cout<<"初始化成功!"<<endl;  //test
}

 
template<typename T>
LinkedList<T>::~LinkedList(){   

   node<T> *q;
   while (first)                         //释放单链表的每一个结点的存储空间
   {
     q=first;                            //暂存被释放结点
     first=first->next;                  //工作指针p指向被释放结点的下一个结点,使单链表不断开
     delete q;    
}
   cout<<"析构(销毁)成功!"<<endl;	 //test
}

template<typename T>
int LinkedList<T>::getLength(){
	return length;
}

template< typename T> 
void LinkedList<T>::InsertAt(int n,T data){
    
	cout<<"成功插入第"<<n<<"个位置!"<<endl;
}
  
int main(){
    int arr[6]={7,19,4,5,6,9};
    LinkedList<int> t(arr,6);  
//    t.InsertAt(7,689); 
	return 0;
}

  

posted @ 2018-07-07 15:38  千千寰宇  阅读(194)  评论(0编辑  收藏  举报