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