C++学习笔记47:链表的概念与结点类模板
学堂在线学习笔记
链表的概念与结点类模板
顺序访问的线性群体--链表类
链表是一种动态数据结构,可以用来表示顺序访问的线性群体;
链表是由系列结点组成,结点可以在运行时动态生成;
每一个结点包括数据域和指向链表中下一个结点的指针(即下一个结点的地址)。如链表中每个结点中只有一个指向后继结点的指针,则该链表称为单链表;

单链表的结点类模板
template <class T>
void Node<T>::insertAfter(Node<T> *p)
{
//p结点指针域指向当前结点的后继结点
p->next = next;
next = p;//当前结点的指针域指向p
}

删除结点之后的结点:
Node<T> *Node<T>::deleteAfter(void)
{
Node<T> *tempPtr = next;
if (next == )
return ;
next = tempPtr->next;
return tempPtr;
}

//Node.h
#ifndef NODE_H
#define NODE_H
//类模板的定义
template <class T> class Node
{
private:
Node<T> *next;//指向后继结点的指针
public:
T data;//数据域
Node(const T &data, Node<T> *next = ); //构造函数
void insertAfter(Node<T> *p); //在本结点之后插入一个同类结点p
Node<T> *deleteAfter();//删除本结点的后继结点,并返回其地址
Node<T> *nextNode(); //获取后继结点的地址
const Node<T> *nextNode() const;//获取后继结点的地址
};
//类的实现部分
//构造函数,初始化数据和指针成员
template <class T> Node<T> ::Node(const T &data ,Node<T> *next = ) : data(data),next(next){}
//返回后继结点的指针
template <class T> Node<T> *Node<T>::nextNode()
{
return next;
}
//返回后继结点的指针
template <class T> const Node<T> *Node<T>::nextNode() const
{
return next;
} //在当前结点之后插入一个结点p
template <class T> void Node<T> ::insertAfter(Node<T> *p)
{
p->next = next;//p结点指针域指向当前结点的后继结点
next = p;//当前结点的指针域指向p
} //删除当前结点的后继结点,并返回其地址
template <class T> Node<T> *Node<T>::deleteAfter()
{
Node<T> *tempPtr = next;//将欲删除的结点地址存到tempPtr
if (next == )//如果当前结点没有后继结点,返回空指针
return ;
next = tempPtr->next;//使当前结点的指针域指向tempPtr的后继结点
return tempPtr;//返回被删除的结点的地址
} #endif // !NODE_H
C++学习笔记47:链表的概念与结点类模板的更多相关文章
- .NET Remoting学习笔记(一)概念
目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 背景 自接触编程以来,一直听过这个名词Remotin ...
- 【转载】.NET Remoting学习笔记(一)概念
目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 背景 自接触编程以来,一直听过这个名词Remotin ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- JavaSE学习笔记(5)---内部类和String类
JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...
- [Golang学习笔记] 08 链表
链表(Linked list)是一种常见数据结构,但并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针. 由于不必须按顺序存储,链表在插入的时候可以达到O(1),比顺序表快得多,但是查 ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- CUBRID学习笔记 47 show
cubrid的中sql查询语法show c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . ...
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
上次在<iOS学习笔记46——图片异步加载之SDWebImage>中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔 ...
- C++学习笔记48:链表的基本操作
//链表的基本操作 //生成链表,插入结点,查找结点,删除结点,遍历链表,清空链表 //链表类模板 //LinkedList.h #ifndef LINKEDLIST_H #define LINKED ...
随机推荐
- 跨域 jQuery库ajax请求
XMLHttpRequest是原生ajax,缺点是使用起来比较繁琐. jQuery库提供了一组简洁的ajax请求方法. ajax() get() post() 具体使用参考官方API: http:// ...
- Ajax增删改查-----------增
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 发布WebApi项目时,提示未包含bin\yourDocumentationFile.xml文档文件
Open your publishprofile (*.pubxml) and include this code into "Project" element: <Item ...
- Java实现Redis消息队列
这里我使用Redis的发布.订阅功能实现简单的消息队列,基本的命令有publish.subscribe等. 在Jedis中,有对应的java方法,但是只能发布字符串消息.为了传输对象,需要将对象进行序 ...
- stl测试
以下测试都在学校电脑进行 我觉得应该比考试机器慢一点.. 1.map map的速度测出来和放入数值大小有很大关系 比如 #include <bits/stdc++.h> using nam ...
- bzoj2018年5月赛
题解: 老早之前看的并没有写题解.. t1: 我刚开始想的是线段树来维护.. 看了题解发现直接二分就行了 很容易发现因数只会有30个 那么我们就统计每一种因数在这段区间的个数 然后开个vector记录 ...
- Apache Pulsar——企业级消息订阅系统介绍
Apache Pulsar是一款由雅虎开发的类似于Kafka的企业级消息订阅系统,在2016将其开源,由Apach基金会孵化,现在已经成长为Apache基金会的顶级项目.Pulsar在雅虎内部已经运行 ...
- 【Android】详解Android动画之Interpolator插入器
Interpolator英文意思是: 篡改者; 分类机; 校对机 SDK对Interpolator的描述是:An interpolator defines the rate of change of ...
- Python_序列化和反序列化模块
序列化:将对象转换为可通过网络传输或可存储到本地磁盘的数据格式的转换过程,称为序列化,反之,称为反序列化 json: 用来实现不同语言,不同程序直接的信息交互,json支持所有高级语言之间的序列化交互 ...
- Bean Shell常用内置变量总结
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log文件,使用方法:log.info( ...