文章目录

  • 一、链表
  • 二、单链表
    • 1、基本概念
      • (1)单链表
      • (2)头指针——必有元素
      • (3)头结点——非必需元素
      • (4)尾结点
    • 2、查找操作
    • 3、插入操作
    • 4、删除操作
  • 三、设计思想—— 时间 <-> 空间
  • 四、LeetCode206.反转链表
    • 1、题目描述
    • 2、示例
    • 3、分析
    • 4、实现
  • 五、碎碎念

一、链表

链表:不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用.
内存分布

最常用的链表结构:单链表、双向链表和循环链表

二、单链表

1、基本概念

(1)单链表

当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。

  • 非空表(有头结点):
  • 空表:

(2)头指针——必有元素

链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。头指针具有标识作用。

任何情况下,头指针都存在,无论链表是否为空。

(3)头结点——非必需元素

为了操作的统一和方便(插入/删除首元结点)设立的,放在首元结点(第一元素结点)之前,其数据域一般无意义(也可以 存放链表的长度)。

(4)尾结点

最后一个结点指针为“空”(通常用NULL或“^”符号表示),是链表的结束标志,表示它没有后继结点。

2、查找操作

目标:随机访问第 k 个元素
==》依次遍历链表,查找第 k 个元素
==》时间复杂度:O(n)

3、插入操作

目标:插入 x 结点
==》时间复杂度:O(1)
x->next = a2->next
a2->next = x

4、删除操作

目标:删除 a2 结点
==》时间复杂度:O(1)
p = a1 -> next
a1->next = p->next

三、设计思想—— 时间 <-> 空间

  • 当内存足够时,若追求代码的执行速度 ==》选择空间复杂度高、时间复杂度相对较低的算法或者数据结构
  • 当内存比较紧张 ==》时间换空间

四、LeetCode206.反转链表

1、题目描述

反转一个单链表。

2、示例

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

3、分析

  • 要实现单链表反转,主要是修改结点的指针:将当前结点的指针指向其前驱结点。
  • 在反转的过程中为了防止断链,需要记录下一结点的信息。例如:假设 i 结点之前,我们把所有的结点的指针都已经反转了,那么自然 i 和以后的结点链接发生了断裂!

==》利用三个指针,分别记录:当前结点、其前驱结点、其后继结点即可实现链表反转。

4、实现

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* reverseList(ListNode* head) {        ListNode *pre = NULL;ListNode *pcur = head;ListNode *pnext = NULL;ListNode *tail = NULL;while(pcur != NULL){pnext = pcur->next;if(pnext == NULL)tail = pcur;pcur->next = pre;pre =pcur;pcur = pnext;}return tail;}
};

==》时间复杂度:O(n)

五、碎碎念

  • 很基本的题目,但是自己实现起来还是有困难,还得多多实践和思考;
  • 把链表的操作理解实现。
  • 后续加上leetcode92

【编程2】单链表+单链表反转(LeetCode. 206)相关推荐

  1. 单链表的合并算法_图解算法:单链表两两反转 | 眼睛会了手就会系列

    一. 序 链表作为一种基本的数据结构,本身理解起来,很简单.它通过指针或者叫引用,将一组零散的内存空间(结点),串联起来组成一个数据存储结构. 链表根据其指针的指向和丰富程度,可以分为单链表.双向链表 ...

  2. LeetCode 206. 反转链表 Reverse Linked List

    5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...

  3. 数据结构-链表-单链表

    单链表 文章目录 单链表 创建Node节点 链表的常见链表常见操作: 创建Node节点 package com.njau.link;/*** 链表结点的实体类* @author 张文军**/publi ...

  4. 数据结构与算法笔记(三)—— 链表(单链表、循环链表、双向链表)

    一.前沿 1.1.为什么需要链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活. 链表结构可以充分利用计算机内存空间,实现灵活的内 ...

  5. 数据结构之链表--单链表

    Hello,大家好!好久不见了,之前一直在忙于一些琐事,最近半个月内会将数据结构的各种数据结构实现出来,一个挺有意思的东西. 这次我将要介绍的是链表.链表有单链表,单向循环链表,双向链表,双向循环链表 ...

  6. 建立单链表 单链表的插入_单链列表插入

    建立单链表 单链表的插入 All possible cases: 所有可能的情况: Inserting at beginning 开始插入 Inserting at the ending 在末尾插入 ...

  7. 链表——单链表、单向循环链表、双向链表

    目录 1 单链表 节点实现 单链表操作 单链表实现 测试 链表与顺序表对比 2 单向循环链表 操作 实现 测试 3 双向链表 操作 实现 测试 1 单链表 单向链表也叫单链表,是链表中最简单的一种形式 ...

  8. 单、双链表的循环链表(十五)

    1. 单链表的循环链表 <1>.单链表的循环链表特点 单链表只能向后操作,不能向前操作,如果从当前结点开始,无法访问该结点前面的结点. 如果最后一个结点的指针指向头节点,形成一个闭环,就可 ...

  9. 数据结构上机-尾、头插法建立单链表-单链表遍历C语言完整代码实现

    点击此处跳转视频链接:数据结构上机-尾.头插法建立单链表-单链表遍历C语言完整代码实现

  10. [链表] --- 反转链表(leetcode 206)

    定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3-&g ...

最新文章

  1. 利用最大熵进行阈值分割从而实现灰度图像的二值化的原理概要及OpenCV代码
  2. 【数字信号处理】傅里叶变换性质 ( 频域函数的共轭对称分解 | 序列的傅里叶变换 | 傅里叶变换的共轭对称 | 傅里叶变换的共轭反对称 )
  3. flutter text 左对齐_flutter输入框TextField中文本textAlign对齐分析篇
  4. 数据生态mysql_数据生态:MySQL复制技术与生产实践
  5. 使用 Windows 7 VHD启动计算机
  6. 剑指offer面试题28. 对称的二叉树(递归)
  7. Java 绘制图标(饼状图)JFreeChart快速通过Java创建图表
  8. isPrime 判断素数的函数
  9. 利用IDM没办法从B站下视频?下载悬浮条不显示?解决方案来了!
  10. 了解如何通过简单的技巧在Photoshop或GIMP中制作HDR图像
  11. 众多OA办公协同系统,企业应如何选择?
  12. 10.1-10.31推荐文章汇总
  13. FT2004(D2000)开发实战之PBF配置
  14. 笛卡尔坐标系与右手定则
  15. Google创始人---谢尔盖-布林
  16. 美团“封杀”支付宝遭反垄断诉讼,下一个会是谁?
  17. 数据结构(六):图的概念、存储方式、基本操作、最小生成树、最短路径、有向无环图、关键路径 | Prim、Kruskal算法 | BFS、Dijkstra、Floyd算法 | 拓扑排序 | 求关键路径
  18. 商业周刊:日本社交网站的霸主
  19. 玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测
  20. CCD板机镜头焦距的选择

热门文章

  1. SSM整合(基础框架)代码
  2. php 对接 asp,PHP模拟asp中response类实现方法
  3. python框架大全_常用的Python开源框架有哪些?列举这3个
  4. 图表控件 c++_用C/C++编写16位虚拟内核
  5. php form提交跳转,form表单页面跳转方式提交练习
  6. mysql内置变量_详解MySQL注入利用的变量
  7. python opencv 录制视频_Python利用opencv实现录制视频
  8. 实现redis 手动_Redis精华所在,一口气说完Redis的主从复制和哨兵模式
  9. alive workers 数量为0的解决方案
  10. 统计字符串中各类型的数字个数