C++数据结构之单链表
2012-12-31 15:36
162 查看
以前在学数据结构的时候,单链表是用C语言实现的,所以最近我用C++重新写了一个单链表,复习以前学过的知识。
下面是相关的代码,主要实现的单链表的插入、删除、查找(返回索引)、显示、反转和返回其长度。
下面是相关的代码,主要实现的单链表的插入、删除、查找(返回索引)、显示、反转和返回其长度。
template<class T> class Node { private: template <typename T> friend class LinkedList; Node(T d); T data; Node<T> *next; }; template<class T> class LinkedList { public: LinkedList(); void insert(T d); void remove(T d); int search(T d); void showAll(); void reverse(); int length(); private: int len; Node<T> *head; }; template<class T> Node<T>::Node(T d) { data = d; } template<class T> LinkedList<T>::LinkedList() { head = new Node<T>(0); head->next = NULL; len = 0; } template<class T> void LinkedList<T>::insert(T d) { Node<T> *p,*q; p = head; while(p->next!=NULL) p = p->next; q = new Node<T>(d); p->next = q; q->next = NULL; len++; } template<class T> void LinkedList<T>::remove(T d) { Node<T> *p = head; int i=0; int index = search(d); if(index>=0) { for(;i<index;i++) p = p->next; p->next = p->next->next; len--; } else std::cout<<d<<"不存在"<<std::endl; } template<class T> int LinkedList<T>::search(T d) { Node<T> *p = head->next; int index = 0; while(p) { if(p->data == d) return index; else p = p->next; } return -1; } template<class T> void LinkedList<T>::showAll() { Node<T> *p = head->next; while(p) { std::cout<<p->data<<"\t"; p=p->next; } } template<class T> int LinkedList<T>::length() { return len; } template<class T> void LinkedList<T>::reverse() { Node<T> *p = head->next; Node<T> *q = head->next; head->next = NULL; while(p) { q = p->next; p->next = head->next; head->next = p; p=q; } }
相关文章推荐
- C++之数据结构,单链表
- 数据结构之单链表 C++ 实现
- 数据结构之单链表——C++模板类实现
- 数据结构—单链表(C/C++版)
- 数据结构之单链表——C++模板类实现
- C++数据结构之单链表
- 数据结构之单链表(C++实现)
- c++数据结构 单链表的实现
- 数据结构之单链表 C++实现
- [C++]数据结构之单链表
- 数据结构之单链表实现队列C++
- 【C++数据结构】单链表
- 数据结构 - 如何找到有环单链表的环的入口位置(C++)
- 数据结构之单链表C++(模板)
- 数据结构之——用C++实现算术表达式求值
- 数据结构与算法——图的邻接表表示法类的C++实现
- 数据结构之C++实现二叉树(BinTree)(无主函数)
- 数据结构之单链表与双链表
- C++ 数据结构之布隆过滤器
- C++存储数据结构之三vector