【Day3】[资料结构]-链结串列Linked List

链结串列(Linked List)常用来处理相同类型资料,在不连续的记忆体位置,以随机的方式储存,由於不用事先宣告一块连续记忆体空间,所以较不会造成记忆体的浪费。

由许多节点组成,每个节点包含资料栏指标栏,指标栏会指向下一个资料所在的记忆体位置。因此再追加或删除资料相当方便,因为只需要更动指标的指向,但在读取资料就会较费时,因为必须从串列的头开始寻找。

可以想像一辆火车,透过挂勾将车厢一节一节地串起来,能够依乘客需求多寡来使用挂勾更动车厢数量。


单向链结串列Singly Linked List

基本的链结串列结构,从串列头(Head)开始依序指向下一笔资料,串列尾(Tail)为最後一笔资料指向空值(Null)。
https://ithelp.ithome.com.tw/upload/images/20210914/20121027KfaEdl6AVY.jpg

追加资料的步骤

只需要更动指标的指向。
https://ithelp.ithome.com.tw/upload/images/20210914/20121027Fuy64ZBv9p.jpg


双向链结串列Doubly Linked List

每个节点会变成一个资料栏两个指标栏,让资料可以从头或尾巴开始找,优点是可以让被破坏或遗失的节点被找回来,但在追加或删除资料时,必须更动比单向链结串列更多的指标次数
https://ithelp.ithome.com.tw/upload/images/20210914/20121027GQdhacYTQ0.jpg


环狀链结串列 Circular Linked List

在单向链结串列中,万一某节点被破坏或遗失,整个串列将会没作用,因此如果把串列最後一个节点指向串列头,这样每个节点都可以是串列头
https://ithelp.ithome.com.tw/upload/images/20210914/20121027lkG5jI8XoZ.jpg


阵列与链结串列的优缺点比较

https://ithelp.ithome.com.tw/upload/images/20210914/20121027POuiLls7tO.jpg

阵列的介绍可以参考此篇


<<:  .NET Core第13天_View常见操作_Layout布局页_PartialView部分检视_强类型视图(大量资料或物件的传递)

>>:  Day2关於『程序』的起源和特性&演算法

第48天-学习 crontab 工作排程

今天进度 鸟哥私房菜 - 第十五章、例行性工作排程(crontab) 我在 Crontab.guru...

【C++】Stack and Queues

堆叠跟柱列在程序中算是很基本的资料结构~ 它们的储存特性一个是LIFO~ 另一个则是FIFO~ 学习...

[Day20] Yew WASM 凯萨密码简介以及加密

不知道为啥总感觉进度堪忧,我是说准备工作 之前原本有一个能运行的东西现在运行不了 我翻 commit...

Flutter体验 Day 10-表单组件

表单组件 使用表单处理使用者输入是常见的应用的基础功能,使用这些表单组件可以应用在注册、登入、电商…...

[火锅吃到饱-2]【蓝象廷泰锅-台中新时代店】泰式火锅吃到饱 #用手机一样可以拍出优质照片+影片~

舒安表示:我的手机是有高画质的,不过这影片的4K片段是用相机拍出来的。 半年前,在蓝象廷用餐时,因为...