代码是自己编写,供参考
#include <iostream>
using namespace std;
template <class T>
class Node
{
public:
T data;
Node *next;
};
template <class T>
class Linklist
{
private:
Node<T> *head;
int size;
public:
Linklist();//构造函数
~Linklist() //析构函数释放头指针
{
delete head;
}
int CreateLinklist(int n);//创建链表
int TravelLinklist();//遍历链表
int DeleteLinklist(T n);//删除链表里的东西
int ClearLinklist();//清空链表
int DestroyLinklist();
};
template<class T>
Linklist<T>::Linklist()
{
size = 0;
head = new Node<T>;
head->next = NULL;
}
template<class T>
int Linklist<T>::CreateLinklist(int n)
{
if(n <= 0)
{
cout << "创建不成功.."<< endl;
return 0;
}
Node<T> *pnew; //创建的新节点
Node<T> *pt; //下标节点
pt = head; //先指向头节点
this->size = n;
for(int i = 0; i < this->size; i++)
{
pnew = new Node<T>;
pnew->next = pt->next;
pt->next = pnew;
cin >> pnew->data;
pt = pnew;
}
cout <<"Linklist created successfully..."<< endl;
}
template<class T>
int Linklist<T>::TravelLinklist()
{
if(this->size == 0 && head != NULL)
{
cout << "该链表为空...."<< endl;
return 0;
}
if(head == NULL)
{
cout << "不存在该链表..."<<endl;
}
Node<T> *pt;
pt = head->next;
for(int i = 0;i < this->size; i++)
{
if(pt != NULL)
{
//cout << "sas"<<endl;
cout <<pt->data << " ";
pt = pt->next;
}
}
cout << endl;
return 0;
}
template <class T>
int Linklist<T>::DeleteLinklist(T a)
{
if(this->size == 0)
{
cout<< "链表以为空...."<<endl;
}
Node<T> *pt;
pt = head;
Node<T> *temp = pt;
for(int i = 0;i < this->size; i++)
{
if(pt->next != NULL)
{
pt = pt->next;
if(pt->data == a)
{
temp->next = pt->next;
delete pt;
this->size--;
return 0;
}
temp = temp->next;
}
}
cout<< "未找到该data...删除失败...." << endl;
return 0;
}
template <class T>
int Linklist<T>::ClearLinklist()
{
if(this->size == 0)
{
cout<< "该链表已为空..."<<endl;
return 0;
}
Node<T> *pt = head->next;
for(int i = 0; i < size; i++)
{
head->next = pt->next;
delete pt;
pt = head->next;
}
size = 0;
cout<< "已清空链表" <<endl;
return 0;
}
template <class T>
int Linklist<T>::DestroyLinklist()
{
if(size == 0)
{
delete head;
head = NULL;
cout<<"链表已销毁"<<endl;
return 0;
}
Node<T> *pt = head->next;
for(int i = 0; i < size; i++)
{
head->next = pt->next;
delete pt;
pt = head->next;
}
size = 0;
head = NULL;
cout<< "已销毁链表" <<endl;
return 0;
}
int main()
{
Linklist<int> a;
a.CreateLinklist(5);
a.TravelLinklist();
a.DeleteLinklist(5);
a.TravelLinklist();
a.ClearLinklist();
a.TravelLinklist();
a.DestroyLinklist();
system("pause");
}