#include <iostream>
using namespace std;
typedef int DATA;
//链表的尾插法
struct SNode
{
DATA data;
SNode* pNext;
};
struct SList
{
SNode* m_pHead;
SNode* end_pHead;
SList()
{
m_pHead = NULL;
end_pHead = m_pHead;
}
~SList()
{
}
void AddHead(DATA d)
{
//尾插法比头插法复杂一点,要判断输入的是不是第一个结点,如果是第一个节点,就要头结点指向第一个
//节点,而且需要多用一个指针 end_pHead;(一直指向尾节点)
SNode* p = new SNode;
p->data = d;
if (m_pHead == NULL)
{
m_pHead = p;
}
else
{
end_pHead->pNext = p;
}
end_pHead = p;
end_pHead->pNext = NULL;
}
void Delete_Data()//删除数据
{
SNode* p = m_pHead;
if(p != NULL)
{
m_pHead = m_pHead->pNext;
delete p;
}
}
int GetCount()
{
SNode* p = m_pHead;
int i = 0;
while(p)
{
i++;
p=p->pNext;
}
return i;
}
void prints()
{
SNode* p = m_pHead;
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_Data();
list.Delete_Data();
list.prints();
cout<<"链表的长度为:"<<list.GetCount()<<endl;
return 0;
}
不带头节点的链表尾插法C++实现
最新推荐文章于 2024-07-13 20:44:28 发布