#筆記:資料結構 part1

Jia
4 min readNov 26, 2020

2020.11.26

前言:

資料結構第一次接觸是在碩一時,當初還在初學JS,借到了一本【JavaScript 資料結構及演算法實作】,那時連迴圈都還搞不清楚的我,看的真的像天書那般XD,因為那時就看到網路上許多人說,工程師必須要學習資料結構和演算法(當初連會不會走上這條路都還不確定),想想到了現在,也寫了二、三年,所以要來補足這方面,因此就以資料結構開始。

甚麼是資料結構?

電腦科學中,資料結構(英語:data structure)是電腦中儲存、組織資料的方式。by wiki

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法索引技术有关 。by baidu

其實資料結構就講白了就是一種在程式中裝載資料的載體,在JS中常見的array(你的array怎麼不像array@@)和Object,或是C#中的Array或甚是自己定義的類class都算是一種資料結構。

而不同的使用情境則適合不同的資料結構,甚至有些特定情境下所設計的資料結構,而正確的資料結構選擇可以提高演算法的效率,所以選擇正確的資料結構能決定程式最終的品質好壞。

常見的資料結構包含:

1.堆疊(Stack)
2.佇列(Queue)
3.陣列(Array)
4.連結串列(Linked List)
5.樹(Tree)
6.圖(Graph)
7.堆積(Heap)
8.雜湊表(Hash table)

堆疊(stack)

後進先出,就如同去吃爭鮮時堆的盤子,可以拿下盤子(Pop)或放一個盤子上去(Push),新增和刪除都發生在最頂端。

by wiki

佇列(Queue)

先進先出,就像是你排隊進Apple要看最新款的Iphone那樣,新增發生在後端(Back),刪除發生在前端(Front)。

by wiki

陣列

陣列應該是最受歡迎的資料結構之一了吧,基本上Array的長度需要事先定義(奇怪JS中的array怎麼不用,有看到這篇討論中,有提到JS中的array其實更像是Object,只是他的key就是index值)。

連結串列(Linked List)

這個我覺得是比較不好理解的,因為感覺和陣列很像,一樣是一列的資料?其中每一個節點包含資料與指標。

是一種線性表,但是並不會按線性的順序儲存資料,而是在每一個節點裡存到下一個節點的指標(Pointer)。 by wiki

by wiki

--

--

Jia

看一次不懂 就看兩次吧。每一天努力一點,不知不覺就會成為想像中的樣子的。 like60955@gmail.com