数据结构——链表

1,149 阅读1分钟

1. 链表的基础知识

什么是链表: 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一个个结点组成,每个结点包括两个部分:

  • 存储的数据域
  • 存储下一个结点地址的指针域

一张图表示链表

image-20211226231436209.png

链表的代码实现

链表结点.png

2. 链表的使用

2.1插入结点

2.1.1顺序插入—— 添加到链表的尾部

Untitled (1).png

同样的操作,优雅一点,封装一下

Untitled (2).png

因为指针引用的原因,所以最后得到的 p 其实就是 list 这个链表的最后一位,所以最后 p.next = new ListNode(value) 其实就是给 list 的最后一个结点的 next 添加 new ListNode(value)

2.1.2 中途插入

搞懂了上面的顺序插入,那么中途插入也很简单

Untitled (3).png

其他的复杂操作基本上都是基于此,理解了以后其实也没什么难的。

2.2 删除结点

玩会了插入节点,删除结点也很简单。

删除指定节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。

Untitled (5).png

再来点 leetcode 的题,删除排序链表中的重复元素

Untitled (6).png

删除链表中的重复元素二

难度升级!

Untitled (7).png

这一题重点标出来了,不理解可以画图来帮助自己理解

2.3 查找

环形链表

简单题,快慢指针轻松搞定

Untitled (8).png

环形链表II

难度再升级

Untitled (9).png

一步一步,从链表开始整起!尽量保持日更,周末放大招~ 大家一起学会数据结构与算法,刷透 leetcode