数据结构&算法-单链表

时间:2023-03-09 20:30:26
数据结构&算法-单链表

1、引言

工作一年了,感觉越来越懒散,把很多基础性的东西都慢慢遗忘了,最近想趁着还没忘完,回顾一下,整理了点笔记,分享一下。

如有错的地方,欢迎大家怒喷。

2、学习

我们就从最简单的链表开始吧。

链表其实跟数组有点像,都是一串相同类型的元素的集合,最大的不同点在于:数组是一片连续的空间,其中的元素可以通过下标来访问,但删除元素的时候有点麻烦,需要将该元素之后的元素都向前移动一个位置;而链表是通过指针来将一串元素连起来的,前一个元素中存有下一个元素的地址,这些元素不一定是连续的,所以访问的时候不能使用下标,但插入和删除的时候会简单很多。

对链表的操作无外乎增、删、改、查,下面我们就来看一下这四种操作的具体步骤。

假设下图是我们要操作的链表:

数据结构&算法-单链表

  查询、修改元素:

数据结构&算法-单链表

查询和修改过程基本一样,修改是先查询在修改,所以就放在一起了,这里我们可以看到,如果想查询一个元素的话,必须从第一个元素开始扫描,直到找到这个元素为止,如果链表中有很多元素而恰好我们要查询的元素又比较靠后,就比较耗时了,所以如果你的应用要做很多查询操作的话,使用数组会更好,因为数组可以用下标来访问,时间复杂度为O(1),效率秒杀链表。

删除元素:

数据结构&算法-单链表

删除元素很简单,找到要删除的元素,将上一个元素的Next指针指向要删除元素的下一个位置即可。

增加元素:

数据结构&算法-单链表

增加元素稍微复杂点,首先将A6的Next指针指向A4,然后再将A3原先指向A4的指针指向A6,这样A6就插入到了A3到A4之间了。

(由于单链表原理比较好理解,这里就不提供代码了。)