不带头结点的链表头插法C++实现
2014-11-07 09:36
537 查看
#include <iostream> //不带头结点的链表的C++实现; using namespace std; typedef int DATA; struct SNode { DATA data; SNode* pNext; }; struct SList { SNode* m_pHead; SList() { m_pHead = NULL;//空链表;不带头结点; } ~SList() {//析构函数对本类内的普通变量不需要清理,而是清理申请过得堆空间 SNode* p = m_pHead, *p1; while (p) { p1 = p; p = p->pNext; delete p1; } } void AddHead(DATA d)//头插法 添加节点 { SNode* p = new SNode; p->data = d; p->pNext = m_pHead; m_pHead = p; } int GetCount()//获得节点数目 { int i = 0; SNode *p = m_pHead; while(p) { i++; p=p->pNext; } return i; } void Delete()//删除节点 { SNode*p = m_pHead; m_pHead = m_pHead->pNext; delete p; } void print()//打印链表数据 { SNode *p = m_pHead; while (p) { cout<<p->data<<endl; p = p->pNext; } } }; int main() { SList list1,list2; while (true) { cout<<"请输入一个数据:"<<endl; DATA d; cin>>d; cout<<"请输入存入的链表:(1 or 2)"<<endl; int i = 0; cin>>i; if (i == 0) { break; } if (i == 1) { list1.AddHead(d); } if (i == 2) { list2.AddHead(d); } cout<<"list1中的个数为:"<<list1.GetCount()<<endl; cout<<"list2中的个数为:"<<list2.GetCount()<<endl; } list1.Delete(); list1.Delete(); list1.print(); return 0; }
相关文章推荐
- 带头结点的链表尾插法C++实现
- 数据结构 带头结点的单链表 操作大全 最全的链表操作(c++实现)
- 经典算法与数据结构的c++实现——带头结点的单链表
- 数据结构实验-用C++实现带头结点的循环链表
- 带头结点的链表头插法C++实现
- 数据结构(5)线性表之链表C++实现带头结点的单链表合并
- C++模板实现双向循环链表(有带头结点)
- 带头结点单链表的各种各种运算(C++模板类实现)
- C++实现带头结点的单链表(友元类)
- C++实现带头结点单链表
- 用C++实现数据结构二 带头结点的单链表
- 不带头结点的链表实现
- 顺序链表 不带头结点 c++
- 链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 用C语言编写 用以存放输入的二进制数 建立 一个带头结点的线性链表
- 带头结点的单链表实现就地逆置的更优方法
- 约瑟夫环问题(不带头结点单循环链表实现和数组实现)
- 计算带头结点单链表的长度 计算单链表的长度,实现单链表的打印
- 带头结点的单链表实现
- 查找链表中倒数第k个结点 C++实现
- 对带头结点的单链表实现就地逆置的算法分析