算法初接触 | 数据结构[链表]

68 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天

数据结构

一、什么是数据结构

数据储存于计算机内存中,数据储存内存时,决定数据顺序和位置关系的便是“数据结构”

电话薄的数据结构

例一:从上往下顺序添加
添加数据简单,查询麻烦
例二:按姓名的拼音顺序排列
添加数据麻烦,查询简单
因为数据都以字典顺序排列,所以他们都有“结构”

将数据存储于内存时,根据使用目的选择合适的数据结构,从而提高内存的利用率

二、链表

链表是数据结构之一,其中的数据呈线性排列。在链表中,数据的添加和删除都较为方便,就是访问比较耗费时间。

01 Blue、Yellow、Red这3个字符串作为数据被存储于链表中。每个数据都有1个“指针”,它指向下一个数据的内存地址。
02 在链表中,数据一般都是分散存储于内存中的,无须存储在连续空间内。
03 因为数据都是分散存储的,所以如果想要访问数据,只能从第1个数据开始,顺着指针的指 向--往下访问(这便是顺序访问)。
04 如果想要添加数据,只需要改变添加位置前后的指针指向就可以。
05 数据的删除也一样,只要改变指针的指向就可以。

补充说明

上文中讲述的链表是最基本的一种链表。除此之外,还存在几种扩展方便的链表。
虽然上文中提到的链表在尾部没有指针,但我们也可以在链表尾部使用指针,并且让它指向链表头部的数据,将链表变成环形。这便是“循环链表”,也叫“环形链表”。环链表没有头和尾的概念。想要保存数量固定的最新数据时通常会使用这种链表。
循环链表
b5895a39942ab288f137c9dd8139b6b.jpg
另外,上文链表里的每个数据都只有一个指针,但我们可以把指针设定为两个,并且让它们分别指向前后数据,这就是“双向链表”。使用这种链表,不仅可以从前往后,还可以从后往前遍历数据,十分方便。
但是,双向链表存在两个缺点:一是指针数的增加会导致存储空间需求增加;二是添加和删除数据时需要改变更多指针的指向。
双向链表
39d565efe36f1c7fe3e30e133dc53d7.jpg