之前在C语言里面有实现链表,现在用c++简单的实现链表类,只实现了插入节点和排序,我先开个好头,其余的代码基本上和C语言里面的代码差不多,直接上代码咯;
#include <iostream>
#include <cstdio>
using namespace std;
template<class Type>
class CList
{private:
class CNode
{
public:
CNode* m_pNext;
Type m_Data;
CNode()
{
m_pNext = NULL;
}
};
CNode* m_pHead;
int m_NodeSum;
public:
CList()
{
m_pHead = NULL;
m_NodeSum = 0;
}
void PushBack(Type Data)
{
CNode* pNewNode = new CNode();
pNewNode->m_Data = Data;
if(m_NodeSum == 0)
m_pHead = pNewNode;
else
{
CNode* pTmp = m_pHead;
for(int i = 1;i < m_NodeSum;i++)
pTmp = pTmp->m_pNext;
pTmp->m_pNext = pNewNode;
}
m_NodeSum++;
}
void NodeSort()
{
CNode* pSort = m_pHead;
CNode* pTmp = NULL;
Type tTmp;
while(pSort != NULL)
{
pTmp = pSort->m_pNext;
while(pTmp != NULL)
{
if(pTmp->m_Data < pSort->m_pNext->m_Data)
{
tTmp = pSort->m_pNext->m_Data;
pSort->m_pNext->m_Data = pTmp->m_Data;
pTmp->m_Data = tTmp;
}
pTmp = pTmp->m_pNext;
}
pSort = pSort->m_pNext;
}
}
void NodeSize()
{
cout<<m_NodeSum<<endl;
}
void ShowAll()
{
if(m_NodeSum > 0)
{
CNode* pTmp = m_pHead;
while(pTmp != NULL)
{
cout<<pTmp->m_Data<<"\t";
pTmp = pTmp->m_pNext;
}
cout<<endl;
}
}
~CList()
{
if(m_NodeSum > 0)
{
CNode* pDelete = m_pHead;
CNode* pTmp = NULL;
while(pDelete != NULL)
{
pTmp = pDelete->m_pNext;
delete pDelete;
pDelete = pTmp;
}
m_NodeSum = 0;
pDelete = NULL;
pTmp = NULL;
}
m_pHead = NULL;
}
};
int main()
{
CList<int> List;
List.PushBack(11);
List.PushBack(20);
List.PushBack(13);
List.PushBack(14);
List.PushBack(15);
List.NodeSize();
List.ShowAll();
List.NodeSort();
List.ShowAll();
CList<float> Listb;
Listb.PushBack(11.4);
Listb.PushBack(15.4);
Listb.PushBack(12.4);
Listb.PushBack(18.4);
Listb.ShowAll();
return 0;
}
是不是觉得,用C++来实现链表又有不一样的感觉呢,希望能帮到你。。。