在JavaScript中,數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的集合。常用的數(shù)據(jù)結(jié)構(gòu)有:數(shù)組、列表、棧、隊(duì)列、鏈表、字典、集合等等。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
什么是數(shù)據(jù)結(jié)構(gòu)?
在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)(英語(yǔ):data structure)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)起源于程序設(shè)計(jì),它不是使我們?cè)趺磳W(xué)會(huì)編碼,而是為我們提供一種編程思想,具有更好的思路。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來(lái)更高的運(yùn)行或者存儲(chǔ)效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。
數(shù)據(jù)結(jié)構(gòu)能做什么?
-
有效的管理數(shù)據(jù)對(duì)象
-
提升運(yùn)算性能
數(shù)據(jù)結(jié)構(gòu)的概念定義
數(shù)據(jù):
數(shù)據(jù):是用來(lái)描述一種客觀事物的符號(hào)(字符串、數(shù)字、json、聲音、圖片…)數(shù)據(jù)元素:有一定意義的最基本的單位,當(dāng)我們使用計(jì)算機(jī)來(lái)處理數(shù)據(jù)的時(shí)候,數(shù)據(jù)元素通常被我們用作一個(gè)整體來(lái)處理,這個(gè)整體又稱記錄數(shù)據(jù)對(duì)象:是指性質(zhì)相同的數(shù)據(jù)元素的集合數(shù)據(jù)項(xiàng):是組成數(shù)據(jù)的最小單位
結(jié)構(gòu):
數(shù)據(jù)元素相互之間的關(guān)系稱之為結(jié)構(gòu)。
結(jié)構(gòu)又分兩種:
-
邏輯結(jié)構(gòu):指反映數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu),其中的邏輯關(guān)系是指數(shù)據(jù)元素之間的前后件關(guān)系,而與他們?cè)谟?jì)算機(jī)中的存儲(chǔ)位置無(wú)關(guān)
-
存儲(chǔ)結(jié)構(gòu):指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間的存放形式
所以,一種數(shù)據(jù)結(jié)構(gòu)可表示成一種或多種存儲(chǔ)結(jié)構(gòu)
邏輯結(jié)構(gòu):
集合:集合中的數(shù)據(jù)成員是無(wú)序的松散的關(guān)系,且每個(gè)數(shù)據(jù)成員在集合中不能重復(fù)線性結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)中的元素存在一對(duì)一的相互關(guān)系非線性結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)中的元素存在一對(duì)多或多對(duì)多的相互關(guān)系
存儲(chǔ)結(jié)構(gòu):
順序存儲(chǔ):數(shù)組就是典型的順序存儲(chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ):鏈表采用的就是鏈?zhǔn)酱鎯?chǔ)索引存儲(chǔ):索引存儲(chǔ)的優(yōu)點(diǎn)是檢索速度快,但是需要增加附加的索引表,會(huì)占用較多的存儲(chǔ)空間散列存儲(chǔ):散列存儲(chǔ)使得檢索、增加、刪除節(jié)點(diǎn)的操作都很快,缺點(diǎn)是解決散列沖突會(huì)增加時(shí)間和空間的開銷,常用的解決散列沖突的方法有開鏈法和線性探測(cè)法
常用的數(shù)據(jù)結(jié)構(gòu)
數(shù)組:
一個(gè)存儲(chǔ)元素的線性集合(collection),元素可以通過索引來(lái)任意存取,索引通常是數(shù)字,用來(lái)計(jì)算元素之間存儲(chǔ)位置的偏移量。
列表:
人們?nèi)粘I钪薪?jīng)常使用列表:待辦事項(xiàng)列表、購(gòu)物清單、十佳榜單、最后十名榜單等。
棧:
是一種高效的數(shù)據(jù)結(jié)構(gòu),因?yàn)閿?shù)據(jù)只能在棧頂添加或刪除,所以這樣的操作很快,而且容易實(shí)現(xiàn)。
隊(duì)列:
隊(duì)列用于存儲(chǔ)按順序排列的數(shù)據(jù),先進(jìn)先出,這點(diǎn)和棧不一樣
鏈表:
鏈表是由一組節(jié)點(diǎn)組成的集合。每個(gè)節(jié)點(diǎn)都使用一個(gè)對(duì)象的引用指向它的后繼。指向另一個(gè)節(jié)點(diǎn)的引用叫做鏈
字典:
字典是一種以鍵- 值對(duì)形式存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),就像電話號(hào)碼簿里的名字和電話號(hào)碼一樣。
樹:
樹是計(jì)算機(jī)科學(xué)中經(jīng)常用到的一種數(shù)據(jù)結(jié)構(gòu)。樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),以分層的方式存儲(chǔ)數(shù)據(jù)。
樹被用來(lái)存儲(chǔ)具有層級(jí)關(guān)系的數(shù)據(jù),比如文件系統(tǒng)中的文件;樹還被用來(lái)存儲(chǔ)有序列表。
圖:
圖由邊的集合及頂點(diǎn)的集合組成。
散列表:
散列是一種常用的數(shù)據(jù)存儲(chǔ)技術(shù),散列后的數(shù)據(jù)可以快速地插入或取用。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。
集合:
集合(set)是一種包含不同元素的數(shù)據(jù)結(jié)構(gòu)。集合中的元素稱為成員。
集合的兩個(gè)最重要特性是:首先,集合中的成員是無(wú)序的;其次,集合中不允許相同成員存在。
常用的數(shù)據(jù)結(jié)構(gòu)會(huì)在后續(xù)陸續(xù)逐個(gè)擊破!
【推薦學(xué)習(xí):javascript高級(jí)教程】