一个很好地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;
}

一个很好地List实现源码相关推荐

  1. PHP实现的一个很强大的彩票网站源码WAP版

    摘要:后台thinkPHP架构,页面程序双分离,Mysql数据库严谨数据结构.多重数据审核机制.出票机制和监控机制,html5前端技术适用移动端,后台逻辑更多以server接口可快捷实现对接pc和ap ...

  2. 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放

    20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放 文章目录 202205 ...

  3. Vue 彩色头像|一个有趣的头像生成器 附源码

    前言 这是一款矢量风格的头像生成器,您可以搭配不同的素材组件,生成属于您自己的个性化头像. 介绍 您可能感兴趣的功能: 可视化组件配置栏 随机生成头像 重做/撤消 国际化 批量生成多个头像 在线体验 ...

  4. html制作一个酷炫的记事本(源码)

    文章目录 1.记事本风格和灵感 1.1 设计灵感 1.2 整体风格 2.代码展示 1.1 酷炫的记事本效果图 1.2 主代码 源码下载 html制作一个酷炫的记事本(源码) 使用html实现记事本的完 ...

  5. 一步一步oa办公系统java,OA项目 一个OA办公系统的java源码 联合开发网 - pudn.com

    OA项目 所属分类:OA系统 开发工具:Java 文件大小:599KB 下载次数:9 上传日期:2018-06-10 18:13:39 上 传 者:renton 说明:  一个OA办公系统的java源 ...

  6. 闲来无事,用java写了一个魔方小程序。附源码

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  7. java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  8. C语言实现的一个小学生算数自测系统源码分享

    C语言实现的一个小学生算数自测系统源码分享 #include <stdio.h> //标准输入输出 #include <stdlib.h> //用于对程序进行退出操作 #inc ...

  9. php decrypt,GitHub - qiling/php-decrypt: PHP Decrypt是一个跨平台用来解密PHP源码的扩展

    PHP Decrypt PHP Decrypt是一个跨平台用来解密PHP源码的扩展,可以解密目前市场上大部分加密的源码(除了OpCode混淆-Swoole Compile). 特点 兼容 OPcach ...

最新文章

  1. 秘境探索之一个.NET 对象从内存分配到内存回收
  2. android 垂直自动滚动条,Android实现Activity水平和垂直滚动条的方法
  3. BDTC 2019 | 七个开发者能干多大的事?​
  4. Alex-Net网络总结
  5. elcentro matlab,EL-Centro地震波积分计算与基线调整.docx
  6. Does Rails Hurt?
  7. C++之初始化列表的一个笔记
  8. WF4.0实战(九):猜数字游戏,测下你的智力
  9. 2021亚太杯数学建模竞赛
  10. 傅里叶变换:不只是多项式乘法
  11. 读书印记 - 《南北战争三百年》
  12. 大数据中台架构以及建设全流程一(Paas层设计)
  13. 中国建设银行数据治理实践的三高、四落、八行为
  14. iOS在UIButton中换行
  15. 插空排序C语言(直接插入排序)
  16. 【专栏】国内外物联网平台初探(篇三:QQ物联·智能硬件开放平台)
  17. html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签
  18. 手机邮箱怎么弄_我的手机邮箱怎么设置
  19. 使用clean-webpack-plugin小插件报错CleanWebpackPlugin is not a constructor
  20. 医学影像图像处理若干关键问题的研究——开题报告

热门文章

  1. 选择结构_标准if-else语句
  2. RocketMQ的历史发展
  3. 重写Object类的equals方法
  4. 使用@Async实现异步调用
  5. php 获取设备,PHP获取设备类型实例代码
  6. 非阻塞同步算法与CAS(Compare and Swap)无锁算法
  7. lambda 表达式中的 this 与普通情况下的 this 指向
  8. JDBC、DriverManage、JNDI、数据源(DataSource)、连接池的区别
  9. 设计模式C++实现--Interpreter模式
  10. css3常用方法以及css3选择器