数据结构与算法(C++)– 链表(Link)


1、基础知识

表:把具有相同类型的序列 A0, A1, A2, … An 称为表 。n 是表的大小,n=0 称为空表。 A0没有前驱,An没有后继。
前驱: Ai 后继 Ai-1 (i < N) ,Ai 是 Ai-1的后继。
后继: Ai−1前驱 Ai (i > 0),Ai-1 是 Ai的前驱。

c++ STL 中的 list 用双向链表实现的,同时记录头和尾节点。


2、单向链表

单向链表:只有后继没有前驱,最后一个节点指向 nullptr。

// 单向链表节点类
struct Node
{int data;Node *next;
}// 创建一个节点
Node *node = new Node;
node->data = 1;
node->next = nullptr;

单向链表插入元素:

// 已知节点 A1 为 p, 在p后插入节点 node
node->next = p->next;
p->next = node;

单向链表删除元素:

// 已知节点 A1 为 p, 在p后删除节点A2为 p1
p->next = p1->next;
delete p1;
p1 = NULL;

单向链表反序:

// 依次改变箭头的方向,以第一个箭头为例
// A0 A1 A2 分别为节点 pre cur next
cur->next = pre;
pre = cur;
cur = next;
next = next->next;

3、双向链表

双向链表:后继和前驱都有,最后一个节点指向 nullptr。

// 双向链表节点类
struct Node
{int data;Node *pre, *next;
}

双向链表插入元素:

// 已知p, 在前面插入node
Node *node = new Node;
node->data = x;
node->pre = p->pre;
p->pre = node;
p->pre->next = node;
node->next = p

双向链表删除元素:

// 删除p
p->next->pre = p->pre;
p->pre->next = p->next;
delete p;
p = NULL;

数据结构与算法(C++)– 链表(Link)相关推荐

  1. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  2. 数据结构与算法之链表结构寻找p、q最近的公共祖先

    链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...

  3. 数据结构与算法--单链表相关面试题

    此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.概述 获取单链表的有效元素个数[新浪面试题1] 获取单链表倒数第k个结 ...

  4. 数据结构与算法 内核链表实现商品购物系统项目+Makefile

    数据结构与算法 内核链表实现商品购物系统项目 第一章 项目实现思维 [1]编译介绍 [2]框架思维 第二章 Makefile编写 第三章 代码编写实现 [1]favorite.txt文件 [2]his ...

  5. 一文通数据结构与算法之——链表+常见题型与解题策略+Leetcode经典题

    文章目录 1 链表 1.1 常见题型及解题策略 1.1.1 LeetCode中关于链表的题目有以下五种类型题: 1.1.2 解题策略 1.2 链表的基本内容 1.2.1 链表的基本结构: 1.2.2 ...

  6. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

  7. java数据接口之链表_Java数据结构和算法之链表

    三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LI ...

  8. Java数据结构和算法(四)--链表

    日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...

  9. 头歌平台数据结构与算法 单链表实验 第1关:倒置链表

    任务描述 相关知识 实验目的 实验任务 实验说明 编程要求 测试说明 任务描述 本关任务:请在右侧编辑器的注释行填入适当内容来完成算法,以实现指定的功能,并通过运行来验证. 相关知识 实验目的 理解线 ...

  10. 数据结构与算法--复杂链表的复制

    复杂链表的复制 题目:实现一个函数complexListNode 复制一个复杂链表.在链表中,每个节点除了有一个next指针指向下一个节点,还有另外一个before节点,before节点指向链表中任意 ...

最新文章

  1. 细说 Java 主流日志工具库
  2. 序列内置方法详解(string/list/tuple)
  3. LVS的工作原理和相关算法
  4. 使用 Microsoft .NET Framework 精简版中的 MessageWindow 类
  5. pycharm专业版-2017.3.3 安装+anaconda3-2019.03-windows
  6. 软件项目风险评估报告00
  7. HTTP之Cookie和Session(C++ Qt框架实现)
  8. C++模拟鼠标键盘操作(转)
  9. Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(1)
  10. Linux种修改用户主目录命令,usermod命令怎么修改用户主目录
  11. 句柄数、连接数、线程数等查询
  12. 【转】为什么需要异步
  13. 编写函数,输入一个自然数n,如果n为奇数,输出表达式1+1/3+…+1/n的值;如果n为偶数,输出表达式1/2+1/4+…+1/n的值;输出表达式结果保留2位小数。
  14. RabbitMQ的架构模型
  15. Android Gson 操作
  16. 中国最牛的“创业帮派”
  17. [实用超分网络大赏]《Real-Time Quantized Image Super-Resolution on Mobile NPUs, Mobile AI 2021 Challenge》
  18. 为什么产品经理的工资不能比程序员高?
  19. 一次拍摄搞定多相机自动化标定
  20. Hyperbolic Representation Learning

热门文章

  1. Shell命令-内置命令及其它之exec、export
  2. 原型、原型对象、构造函数、原型链理解
  3. UVA-1515 Pool construction (最小割)
  4. 手脱EZIP v1.0
  5. 关于[入行几年后,你的未来应该在哪里]的思考
  6. ThinkPHP3.2 G函数代码及 使用方法
  7. sql批量修改字段内容的语句-SQL技巧
  8. sharepoint 2010学习资源汇总
  9. UNIX环境C - 系统信号
  10. [0] OpenCV_Notes - 琐碎