数据结构与算法(C++)– 链表(Link)
数据结构与算法(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)相关推荐
- python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...
本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...
- 数据结构与算法之链表结构寻找p、q最近的公共祖先
链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...
- 数据结构与算法--单链表相关面试题
此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.概述 获取单链表的有效元素个数[新浪面试题1] 获取单链表倒数第k个结 ...
- 数据结构与算法 内核链表实现商品购物系统项目+Makefile
数据结构与算法 内核链表实现商品购物系统项目 第一章 项目实现思维 [1]编译介绍 [2]框架思维 第二章 Makefile编写 第三章 代码编写实现 [1]favorite.txt文件 [2]his ...
- 一文通数据结构与算法之——链表+常见题型与解题策略+Leetcode经典题
文章目录 1 链表 1.1 常见题型及解题策略 1.1.1 LeetCode中关于链表的题目有以下五种类型题: 1.1.2 解题策略 1.2 链表的基本内容 1.2.1 链表的基本结构: 1.2.2 ...
- JS数据结构与算法_链表
上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...
- java数据接口之链表_Java数据结构和算法之链表
三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LI ...
- Java数据结构和算法(四)--链表
日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...
- 头歌平台数据结构与算法 单链表实验 第1关:倒置链表
任务描述 相关知识 实验目的 实验任务 实验说明 编程要求 测试说明 任务描述 本关任务:请在右侧编辑器的注释行填入适当内容来完成算法,以实现指定的功能,并通过运行来验证. 相关知识 实验目的 理解线 ...
- 数据结构与算法--复杂链表的复制
复杂链表的复制 题目:实现一个函数complexListNode 复制一个复杂链表.在链表中,每个节点除了有一个next指针指向下一个节点,还有另外一个before节点,before节点指向链表中任意 ...
最新文章
- 细说 Java 主流日志工具库
- 序列内置方法详解(string/list/tuple)
- LVS的工作原理和相关算法
- 使用 Microsoft .NET Framework 精简版中的 MessageWindow 类
- pycharm专业版-2017.3.3 安装+anaconda3-2019.03-windows
- 软件项目风险评估报告00
- HTTP之Cookie和Session(C++ Qt框架实现)
- C++模拟鼠标键盘操作(转)
- Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(1)
- Linux种修改用户主目录命令,usermod命令怎么修改用户主目录
- 句柄数、连接数、线程数等查询
- 【转】为什么需要异步
- 编写函数,输入一个自然数n,如果n为奇数,输出表达式1+1/3+…+1/n的值;如果n为偶数,输出表达式1/2+1/4+…+1/n的值;输出表达式结果保留2位小数。
- RabbitMQ的架构模型
- Android Gson 操作
- 中国最牛的“创业帮派”
- [实用超分网络大赏]《Real-Time Quantized Image Super-Resolution on Mobile NPUs, Mobile AI 2021 Challenge》
- 为什么产品经理的工资不能比程序员高?
- 一次拍摄搞定多相机自动化标定
- Hyperbolic Representation Learning