list内容如下:
#ifndef _LIST_
#include <iostream>
using namespace std;
namespace EasySTL
{
template <typename T>
struct LinkNode
{
T m_Data;
LinkNode * m_pNext;
};
template <typename T>
class list
{
public:
list()
{
m_pFirst = NULL;
}
~list()
{
while (m_pFirst)
{
LinkNode<T> * pTemp;
pTemp = m_pFirst;
m_pFirst = pTemp->m_pNext;
delete pTemp;
}
}
//追加节点
bool AppendNode(T node)
{
LinkNode<T> * pNew = new LinkNode<T>;
if (!pNew)
return false;
pNew->m_Data = node;
pNew->m_pNext = NULL;
if (!m_pFirst)
{
m_pFirst = pNew;
return true;
}
LinkNode<T> * pCur;
pCur = m_pFirst;
while (pCur->m_pNext)
{
pCur = pCur->m_pNext;
}
pCur->m_pNext = pNew;
return true;
}
//删除节点
bool DelNode(T node)
{
LinkNode<T> * pPrev, * pCur;
if (!m_pFirst)
return false;
if (m_pFirst->m_Data == node)
{
pCur = m_pFirst;
m_pFirst = pCur->m_pNext;
delete pCur;
return true;
}
pPrev = m_pFirst;
pCur = m_pFirst->m_pNext;
while (pCur)
{
if (pCur->m_Data == node)
{
pPrev->m_pNext = pCur->m_pNext;
delete pCur;
return true;
}
pPrev = pCur;
pCur = pCur->m_pNext;
}
return false;
}
//查找
bool FindNode(T node)
{
LinkNode<T> * pPrev, pCur;
if (!m_pFisrt)
return false;
if (m_pFirst->m_Data == node)
{
return true;
}
pPrev = m_pFirst;
pCur = m_pFirst->m_pNext;
while (pCur)
{
if (pCur->m_Data == node)
{
return true;
}
pPrev = pCur;
pCur = pCur->m_pNext;
}
return false;
}
//插入
bool Insert(int nPos, T node)
{
LinkNode<T> * pNew;
if (nPos < 0)
return false;
if (nPos == 0)
{
pNew = new LinkNode<T>;
if (!pNew)
return false;
pNew->m_Data = node;
pNew->m_pNext = m_pFirst;
m_pFirst = pNew;
return true;
}
LinkNode<T> * pTemp;
LinkNode<T> * pPrev = m_pFirst;
pTemp = m_pFirst;
int i = 0;
while (i < nPos && pTemp)
{
pPrev = pTemp;
pTemp = pTemp->m_pNext;
i++;
}
if (i < nPos)
return false;
pNew = new LinkNode<T>;
if (!pNew)
return false;
pNew->m_Data = node;
pNew->m_pNext = pTemp;
pPrev->m_pNext= pNew;
return true;
}
//打印
void Print()
{
LinkNode<T> * pTemp = m_pFirst;
while (pTemp)
{
cout << pTemp->m_Data << endl;
pTemp = pTemp->m_pNext;
}
}
private:
LinkNode<T> * m_pFirst;
};
}
#endif
main函数:
int _tmain(int argc, _TCHAR* argv[])
{
EasySTL::list<int> l1;
int i = 0;
srand(time(NULL));
for (i = 0; i < 5; i++)
{
int n = rand();
l1.AppendNode(n);
}
l1.Print();
l1.AppendNode(6);
l1.Print();
l1.Insert(3, 8);
l1.Print();
l1.DelNode(6);
l1.Print();
system("pause");
return 0;
}