一个很好地List实现源码
来源:互联网 发布:php redis 队列算法 编辑:程序博客网 时间:2024/05/16 03:03
一个很好地List实现源码:
#pragma once#include "list.h"#include <iostream>using namespace std;template <class Type> class List;template <class Type> class Node{Type contents;Node * next;friend List<Type>;};template <class Type> class List{public:List();~List();bool IsEmpty() const {return (pHead==NULL) ? true : false;}//判断链表是否为空int Length() const {return length;} //返回链表中的元素总数bool Find(int k, Type & intnum) const; //寻找链表中的第k个元素,并将其传送至intnumint Search(const Type & intnum) const; //寻找intnum,如果发现intnum,则返回intnum的位置,如果intnum不在链表中,则返回0void Delete(int k, Type & intnum); //把第k个元素取至intnum,然后从链表中删除第k个元素void Insert(int k, const Type &intnum); //在第k个元素之后插入intnumvoid Modify(int k,const Type &intum);//将第k个元素的值修改为intnumvoid ShowListNode(); //显示输出链表的所有数据private:Node<Type> *pHead;int length;};
#include "list.h"template <class Type> List<Type>::~List(){length = 0;delete pHead;pHead = NULL;}template <class Type> List<Type>::List(){length = 0;pHead = NULL;}template <class Type> void List<Type>::Insert(int k, const Type & intnum){if(k==0){if(length == 0){pHead = new Node<Type>;pHead->contents = intnum;length++;}else{Node<Type> *p= new Node<Type>;p->contents = intnum;p->next=pHead;pHead=p;length++;}}else if(k==length){Node<Type> *temp = pHead;for (int i=0;i<k-1;i++){temp = temp->next;}Node<Type> *newNode = new Node<Type>;newNode->contents = intnum;newNode->next = NULL;temp->next = newNode;length++;}else{Node<Type> *temp = pHead;for (int i=0;i<k-1;i++){temp = temp->next;}Node<Type> *newNode = new Node<Type>;newNode->contents = intnum;newNode->next = temp->next;temp->next = newNode;length++;}}template <class Type> void List<Type>::ShowListNode(){if(length == 0){cout<<"空表";}else{ Node<Type> *temp = pHead;for(int i=0;i<length;i++){cout<<"节点"<<i+1<<": "<<temp->contents<<endl;if(i!=length-1){temp = temp->next;}}}}template <class Type> void List<Type>::Delete(int k, Type & intnum){Node<Type> *temp = pHead;if(k==1 && k==length){delete pHead;pHead = NULL;}else if(k==1){pHead = pHead->next;delete temp;}else if(k==length){for(int i=0; i<length-2; i++){temp = temp->next;}delete temp->next;temp->next = NULL;}else{for (int i=0; i<k-1; i++){temp = temp->next;}intnum = temp->contents;for(int i=k; i<length;i++){temp->contents = temp->next->contents;if(i != length-1){temp = temp->next;}else{delete temp->next;temp->next = NULL;break;}}}length--;}template <class Type> bool List<Type>::Find(int k, Type & intnum) const{if(k > length)return false;else{Node<Type> *temp = pHead ;for (int i=0; i<k-1; i++){temp = temp->next;}intnum = temp->contents;return true;}}template <class Type> int List<Type>::Search(const Type & intnum) const{Node<Type> *temp = pHead;for (int i=0; i<length; i++){if(temp->contents == intnum){return i+1;}if(i != length-1)temp = temp->next;}return 0;}template <class Type> void List<Type>::Modify(int k,const Type &intnum){Node<Type> *temp = pHead ;for (int i=0; i<k-1; i++){temp = temp->next;}temp->contents = intnum;}
0 0
- 一个很好地List实现源码
- 一个很好地java论坛推荐
- 如何很好地实现注销功能呢?
- 刚刚发现了一个很好地用户体验
- 一个很好地下载影像资料的网站
- 很好地一个线性代数视频,可视化的理解线性代数
- 一个很好的源码下载学习网站
- 一个简单地list侧滑菜单,自己实现不是梦
- 很好用的一个JS实现TabMenu
- 一个很好的对象池实现
- 查看mfc源码的一个很好的导航工具
- 给大家分享一个很好的asp微博源码
- 一个牛人提供的GIS源码(很好)
- 查看MFC源码的一个很好的导航工具
- 一个很好地音频开发系列如果你看到了请仔细看
- 【练习1】输出一个螺旋数组,可以很好地理解数组和指针的使用
- leetcode 609. Find Duplicate File in System C++stringstream的一个很好地示范
- leetcode 640. Solve the Equation C++stringstream的一个很好地示范
- 择善JAVA学习String和StringBuffer
- Hibernate(八)Session方法、事务隔离级别及懒加载
- 函数
- POJ-3748 位操作
- 一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5
- 一个很好地List实现源码
- 用Fragment实现Tab页面切换效果初步总结
- 股票学习07K线解释
- ChinaVis2015 第一天会议
- 贪心初练
- OC基础---protocol、category和继承的区别
- 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
- 尽享网wordpress微门户主题 Red SOHO一族使用方法教程
- ColorViewPager--动态改变ViewPager的背景,给你一个漂亮的ViewPager