一个很好地List实现源码
一个很好地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实现源码相关推荐
- PHP实现的一个很强大的彩票网站源码WAP版
摘要:后台thinkPHP架构,页面程序双分离,Mysql数据库严谨数据结构.多重数据审核机制.出票机制和监控机制,html5前端技术适用移动端,后台逻辑更多以server接口可快捷实现对接pc和ap ...
- 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放
20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放 文章目录 202205 ...
- Vue 彩色头像|一个有趣的头像生成器 附源码
前言 这是一款矢量风格的头像生成器,您可以搭配不同的素材组件,生成属于您自己的个性化头像. 介绍 您可能感兴趣的功能: 可视化组件配置栏 随机生成头像 重做/撤消 国际化 批量生成多个头像 在线体验 ...
- html制作一个酷炫的记事本(源码)
文章目录 1.记事本风格和灵感 1.1 设计灵感 1.2 整体风格 2.代码展示 1.1 酷炫的记事本效果图 1.2 主代码 源码下载 html制作一个酷炫的记事本(源码) 使用html实现记事本的完 ...
- 一步一步oa办公系统java,OA项目 一个OA办公系统的java源码 联合开发网 - pudn.com
OA项目 所属分类:OA系统 开发工具:Java 文件大小:599KB 下载次数:9 上传日期:2018-06-10 18:13:39 上 传 者:renton 说明: 一个OA办公系统的java源 ...
- 闲来无事,用java写了一个魔方小程序。附源码
闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...
- java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园
闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...
- C语言实现的一个小学生算数自测系统源码分享
C语言实现的一个小学生算数自测系统源码分享 #include <stdio.h> //标准输入输出 #include <stdlib.h> //用于对程序进行退出操作 #inc ...
- php decrypt,GitHub - qiling/php-decrypt: PHP Decrypt是一个跨平台用来解密PHP源码的扩展
PHP Decrypt PHP Decrypt是一个跨平台用来解密PHP源码的扩展,可以解密目前市场上大部分加密的源码(除了OpCode混淆-Swoole Compile). 特点 兼容 OPcach ...
最新文章
- 秘境探索之一个.NET 对象从内存分配到内存回收
- android 垂直自动滚动条,Android实现Activity水平和垂直滚动条的方法
- BDTC 2019 | 七个开发者能干多大的事?​
- Alex-Net网络总结
- elcentro matlab,EL-Centro地震波积分计算与基线调整.docx
- Does Rails Hurt?
- C++之初始化列表的一个笔记
- WF4.0实战(九):猜数字游戏,测下你的智力
- 2021亚太杯数学建模竞赛
- 傅里叶变换:不只是多项式乘法
- 读书印记 - 《南北战争三百年》
- 大数据中台架构以及建设全流程一(Paas层设计)
- 中国建设银行数据治理实践的三高、四落、八行为
- iOS在UIButton中换行
- 插空排序C语言(直接插入排序)
- 【专栏】国内外物联网平台初探(篇三:QQ物联·智能硬件开放平台)
- html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签
- 手机邮箱怎么弄_我的手机邮箱怎么设置
- 使用clean-webpack-plugin小插件报错CleanWebpackPlugin is not a constructor
- 医学影像图像处理若干关键问题的研究——开题报告