#include<iostream>
using namespace std;
typedef int ElemType;
class Clink;
class Node
{
public:
Node(const ElemType&rhs = ElemType())//零初始化/零构造
{
mdata = rhs;
pnext = NULL;//每生成一个结点,指针域都会置空
}
friend class Clink;
private:
ElemType mdata;
Node* pnext;
};
class Clink
{
public:
Clink()//若没有Node的零初始化,可将此行代码写成Clink():phead(ElemType())
{
phead = new Node();
}
void InsertHead(const ElemType& rhs)
{
Node* pnewnode = new Node(rhs);
pnewnode->pnext = phead->pnext;
phead->pnext = pnewnode;
}
void Show()
{
Node* pCur = phead->pnext;
while(pCur != NULL)
{
cout << pCur->mdata <<" ";
pCur = pCur->pnext;
}
cout << endl;
}
~Clink()
{
Node* pCur = phead;
Node* pNext = pCur;
while(pCur != NULL)
{
pNext = pCur->pnext;
delete pCur;
pCur = pNext;
}
phead = NULL;
}
private:
Node* phead;
};
int main()
{
Clink link1;
for(int i = 0;i < 10; ++i)
{
link1.InsertHead(i + 1);
}
link1.Show();
}
C++ 带头结点的单链表
最新推荐文章于 2024-08-30 09:58:13 发布