c++模板类实现单链表
#include<iostream>
using namespace std;
#include<assert.h>
#include<string>
template<class T>
struct LinkNode
{
LinkNode<T>* _next;
T _data;
LinkNode(const T& x)
:_data(x)
,_next(NULL)
{}
};
template<class T>
class List
{
typedef LinkNode<T> Node;
public:
List() //构造函数
:_head(NULL), _tail(NULL)
{
}
List(const List<T>& s) //拷贝构造函数
:_head(NULL), _tail(NULL)
{
if (s._head == NULL)
{
return;
}
else
{
Node *cur(s._head); //调用尾插的方法
while (cur)
{
PushBack(cur->_data);
cur = cur->_next;
}
}
}
void Swap(List<T>& s) //交换函数
{
swap(_head, s._head);
swap(_tail, s._tail);
}
List<T>& operator=(List<T> s) //赋值运算符的重载
{
Swap(s);
return *this;
}
~List() //析构函数
{
clear();
}
void clear() //清理函数
{
Node *cur = _head;
while (cur)
{
Node *next = cur->_next;
delete cur;
cur = next;
}
_head = _tail = NULL;
}
void Display() //显示函数
{
Node *cur = _head;
while (cur)
{