#include <iostream>
using namespace std;
//带头结点的头插法实现链表
typedef int DATA;
struct SNode
{
DATA data;
SNode* pNext;
};
struct SList
{
SNode* m_pHead;
SList()
{
m_pHead = new SNode;
m_pHead->pNext = NULL;
}
~SList()
{
//本身类自带的变量不需要在这里处理
SNode* p = m_pHead;
SNode* p1;
p1 = p;
p = p->pNext;
delete p1;
}
void AddHead(DATA d)
{
SNode* p = new SNode;
p->data = d;
p->pNext = m_pHead->pNext;
m_pHead->pNext = p;
}
void Delete()
{
SNode* p = m_pHead->pNext;
m_pHead->pNext = m_pHead->pNext->pNext;
delete p;
}
int GetCount()
{
SNode* p = m_pHead->pNext;
int i = 0;
while (p)
{
i++;
p=p->pNext;
}
return i;
}
void Prints()
{
SNode* p = m_pHead->pNext;
while (p)
{
cout<<p->data<<endl;
p = p->pNext;
}
}
};
int main()
{
SList list;
while (true)
{
cout<<"请输入一个数据:"<<endl;
int i;
cin>>i;
if (i == 0)
{
break;
}
list.AddHead(i);
}
list.Prints();
cout<<"链表的个数为:"<<list.GetCount()<<endl;
list.Delete();
list.Prints();
cout<<"链表的个数为:"<<list.GetCount()<<endl;
return 0;
}
带头结点的链表头插法C++实现
最新推荐文章于 2023-03-20 13:29:43 发布