C++ 模板实现的单向链表
2014-02-27 11:34:41         来源：C++ 模板实现的单向链表

C++模板实现的单向链表，实现了链表的初始化创建，元素插入，元素链表末尾添加，元素删除，链表清空

//Lists.h

```#ifndef DDXXLISTS_H
#define DDXXLISTS_H
#include
using namespace std;
template
class Lists
{
public:
Lists();
Lists(int nSize);
~Lists();
public:
struct Node
{
Type  e;
Node* next;
Node()
{
}
Node(Type _e)
{
e = _e;
next = NULL;
}
};
public:
bool insert(Type e,int pos);
bool erase(int pos);
void clear();
bool isEmpty();
int getLength();
void print();
private:
int m_nLength;
};

template Lists::Lists()
{
Node *pPos = new Node;
pPos->next = NULL;
m_nLength = 0;
}

template Lists::Lists(int nSize)
{
m_nLength = nSize;
Node *pPos = new Node;
pPos->next = NULL;
m_nLength = nSize;

for (int i=0;inext = new Node;
pPos = pPos->next;
}
}

template bool Lists::insert(Type e,int pos)
{
if (pos >= m_nLength)
{
cout<<"The position to insert out of range"<next;
cnt++;
}
Node *pNew = new Node(e);
pNew->next = ptr->next;
ptr->next = pNew;

m_nLength++;
return true;
}
}

{
Node *pNew = new Node(e);
if (pNew == NULL)
{
cout<<"allocate memory for new node failed"<next != NULL)
{
ptr = ptr->next;
}
ptr->next = pNew;
pNew->next = NULL;
m_nLength++;
return true;
}
}

template bool  Lists::erase(int pos)
{
if (pos >= m_nLength)
{
cout<<"The position to delete out of range"<next;
i++;
}
Node *pdel = ptr->next;
ptr->next = ptr->next->next;
delete pdel;
pdel = NULL;
m_nLength--;

return true;
}
}

template void Lists::print()
{
if(m_nLength ==0)
cout<<"The list is empty"<next!= NULL)
{
ptr = ptr->next;
cout<<"element value:"<e< int Lists::getLength()
{
return m_nLength;
}
template bool Lists::isEmpty()
{
}

template void Lists::clear()
{
Node *ptmp = NULL;
while(ptr != NULL)
{
ptmp = ptr;
ptr = ptr->next;
delete ptmp;
ptmp = NULL;
m_nLength--;
}

}
template Lists::~Lists()
{
Node *ptmp = NULL;
while(ptr->next != NULL)
{
ptmp = ptr;
ptr = ptr->next;
delete ptmp;
ptmp = NULL;
}
delete ptr;
ptr = NULL;
}
#endif```

//main.cpp

```#include
#include "Lists.h"
using namespace std;
void main()
{
cout<<"*************************Test list init***************************"< Lisa;
cout<<"List's length is:"<

```