学堂在线学习笔记

链表的概念与结点类模板

顺序访问的线性群体--链表类

链表是一种动态数据结构,可以用来表示顺序访问的线性群体;

链表是由系列结点组成,结点可以在运行时动态生成;

每一个结点包括数据域和指向链表中下一个结点的指针(即下一个结点的地址)。如链表中每个结点中只有一个指向后继结点的指针,则该链表称为单链表;

单链表的结点类模板

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

最新文章

  1. javascript-- test() 匹配正则 与 逻辑运算符 “!”
  2. php工作笔记5-css定位
  3. 在configure distribution时遇到错误,不能打开sql agent
  4. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第八部---怪物出场
  5. [内存管理]linux X86_64处理器的内存布局图
  6. cookies、sessionStorage、和localStorage的区别。
  7. ubuntu启动报/root/.profile mesg:ttyname failed错误的解决办法
  8. java 常用工具类
  9. select 的问题
  10. IDEA安装和激活
  11. C#使用Ado.Net读写数据库
  12. js判断一个值是空的最快方法是不是if(!value){alert(&quot;这个变量的值是null&quot;);}
  13. SharePoint Framework 构建你的第一个web部件(二)
  14. Codeforces 520B:Two Buttons(思维,好题)
  15. Nuke Linux Crack
  16. rTorrent + ruTorrent 安装和配置
  17. Python3 命令行参数
  18. poj2965(位运算压缩+bfs+记忆路径)
  19. [翻译] LiquidFloatingActionButton
  20. [转]超级强大的SVG SMIL animation动画详解

热门文章

  1. servlet在地址栏填写参数
  2. 用C语言实现窗口抖动
  3. Web.Config引入配置ConfigSource
  4. [转] Lodash常用API笔记
  5. Vs2015 本地git获取的代码目录文件修改后,启动提示error:Unable to start program “C:\Program Files\dotnet\dotnet.exe” 已解决.
  6. IIS异常
  7. Azure 国内版 如何用powershell修改linux系统的密码
  8. 解决背景图文字盖住html里面的dom元素
  9. 006 python操作符
  10. Shiro笔记(四)Shiro的realm认证