linkList C++简单链式链表的实现
2018-06-10 15:15
465 查看
模型图示如下图
C++ 通过定义的METHODS来操纵所有的数据,将数据全部拷贝到自己的空间中进行数据的处理。
通过一个指针来指向所管理的数据内存链。
protected:
Node<T> *m_header;
int m_len;
// Node的结构体
template <typename T>
struct Node
{
T t; //
struct Node<T> *next;
};
对于链表的操作全部是通过函数调用来完成了。
#include <iostream> using namespace std; template <typename T> struct Node { T t; struct Node<T> *next; }; template <typename T> class LinkList { public: LinkList(); ~LinkList(); public: int clear(); int insert(T &t, int pos); int get(int pos, T &t); int del(int pos, T &t); int getLen(); protected: Node<T> *m_header; int m_len; }; template <typename T> LinkList<T>::LinkList() { m_header = new Node<T>; m_header->next = NULL; m_len = 0; } template <typename T> LinkList<T>::~LinkList() { Node<T> *tmp = NULL; while (m_header !=NULL) { tmp = m_header->next; delete m_header; m_header = tmp; } } template <typename T> int LinkList<T>::clear() { //把旧的结点 del掉 Node<T> *tmp = NULL; while (m_header) { tmp = m_header->next; delete m_header; m_header = tmp; } //重新创建 m_header = new Node<T>;
m_header->next = NULL; m_len = 0; return 0; } template <typename T> int LinkList<T>::insert(T &t, int pos) { Node<T> *current = NULL; current = m_header; for (int i=0; i<pos; i++) { current = current->next; } //把上层应用的t结点 缓存到容器中 Node<T> *node = new Node<T>; node->next = NULL; node->t = t; // 把t1缓存下来 //把node结点 在pos位置 加入到链表中 node->next = current->next; current->next = node; m_len ++; return 0; } template <typename T> int LinkList<T>::get(int pos, T &t) { Node<T> *current = NULL; current = m_header; for (int i=0; i<pos; i++) { current = current->next; } t = current->next->t; return 0; } template <typename T> int LinkList<T>::del(int pos, T &t) { Node<T> *current = NULL; Node<T> *ret = NULL; current = m_header; for (int i=0; i<pos; i++) { current = current->next; } ret = current->next; t = ret->t; //把缓存的结点 给上层应用t //删除操作 current->next = ret->next; m_len --; delete ret; //注意释放内存 因为insert的时候 new Node<T> return 0; } template <typename T> int LinkList<T>::getLen() { return m_len; }
// 就上面这些操作接口
相关文章推荐
- linkList 简单链式链表的实现
- C++实现简单的单链表
- C++ 双向链表简单实现通讯录
- c++链表简单实现
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- C++简单实现顺序表与单链表
- C++学习总结——顺序存储,链式存储,索引存储,哈希存储的优缺点,以及vector数组,list链表,十字链表,索引结构,hash表的实现
- [C++] 模板类实现简单链表
- 我认为是最简单的c++实现线性表中链表相关过程
- C++实现的链表,LinkList
- 简单链式二叉树(C++模版技术实现)
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- c++ 链表(模板)简单实现
- C++实现简单的双向链表
- 简单数据结构之循环链表(C++实现)
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
- 实现一个简单的c++ list容器(含sort排序 链表归并算法实现)
- 一个简单的C++的链表实现(使用类模板)
- C++中实现一个简单的单向链表
- C++模板类实现的简单的单链表