C++ 单链表简单实现
2017-03-29 18:21
801 查看
简单的c++ 单链表实现
#ifndef SLINKLIST_H #define SLINKLIST_H template <typename T> class SLinkList { public: //单链表结点 class SLinkNode { public: T date; SLinkNode *next; SLinkNode(const T d) :date(d), next(NULL){}; }; typedef SLinkNode* NodePointer; public: SLinkList(); ~SLinkList(); void insert(const T d); void push_back(const T d); void print(); int size(); void erase(const T d); private: NodePointer head; }; template <typename T> SLinkList<T>::SLinkList() { head = new SLinkNode(0); } template <typename T> SLinkList<T>::~SLinkList() { NodePointer p = head; while (p){ NodePointer q = p->next; delete p; p = q; } } template <typename T> void SLinkList<T>::insert(const T d) { NodePointer p = new SLinkNode(d); p->next = head->next; head->next = p; } template <typename T> void SLinkList<T>::push_back(const T d) { NodePointer p = head->next; int val = 0; while (p){ p = p->next; ++val; } NodePointer q = new SLinkNode(d); //如果在头结点之后插入的第一个结点 if (0 == val){ q->next = head->next; head->next = q; } else{ p = head->next; for (int i = 0; i < val - 1; ++i) p = p->next; p->next = q; } } template <typename T> void SLinkList<T>::print() { for (NodePointer p = head->next; p; p = p->next){ cout << p->date << endl; } } template <typename T> int SLinkList<T>::size() { int val = 0; for (NodePointer p = head->next; p; p = p->next){ ++val; } return val; } template <typename T> void SLinkList<T>::erase(const T d) { NodePointer p = head; while (p){ if (d == p->next->date){ NodePointer q = p->next; p->next = p->next->next; delete q; } p = p->next; } } #endif
相关文章推荐
- 单链表的简单c++实现
- C++简单实现顺序表和单链表
- C++实现单链表(类和对象)——简单实现
- 一个单链表C++简单的实现版本-转自chinaunix
- 单链表c++简单模板实现
- 用C++简单实现单链表
- 单链表c++简单模板实现
- C++中简单实现foreach循环
- Ping的简单实现 CODE: C /C++
- c++ stl list 迭代器简单实现
- 一个简单的多叉树C++实现
- 单链表赋值,定位,添加,(C++ ) 简单实现 未整理
- 用C++实现简单的文件I/O操作
- 在单链表的基础上用c++实现的链栈,并使用进制转换,表达式求值两个小程序来测试
- 实例学MFC(3)--超简单C++实现网络下载器
- 用C++实现简单的文件I/O操作
- 策略模式与简单工厂的C++实现
- c++ 写的linux下简单的实现 get post 请求
- 标准纯C++实现简单的词法分析器(三)
- 标准纯C++实现简单的词法分析器(三)