php數(shù)據(jù)結(jié)構(gòu)有哪些
雙向鏈表
雙鏈表 (DLL) 是一個(gè)鏈接到兩個(gè)方向的節(jié)點(diǎn)列表。當(dāng)?shù)讓咏Y(jié)構(gòu)是 DLL 時(shí), 迭代器的操作、對(duì)兩端的訪問(wèn)、節(jié)點(diǎn)的添加或刪除都具有 O (1) 的開(kāi)銷。因此, 它為棧和隊(duì)列提供了一個(gè)合適的實(shí)現(xiàn)。(推薦學(xué)習(xí):PHP編程從入門到精通)
堆
堆是遵循堆屬性的樹狀結(jié)構(gòu): 每個(gè)節(jié)點(diǎn)都大于或等于其子級(jí), 使用對(duì)堆全局的已實(shí)現(xiàn)的比較方法進(jìn)行比較。
數(shù)組
數(shù)組是以連續(xù)方式存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu), 可通過(guò)索引進(jìn)行訪問(wèn)。不要將它們與 php 數(shù)組混淆: php 數(shù)組實(shí)際上是按照有序的列表實(shí)現(xiàn)的。
映射
映射是一個(gè)數(shù)據(jù)擁有鍵值對(duì)。PHP 數(shù)組可以被看作是從整數(shù)/字符串到值的映射。SPL 提供了從對(duì)象到數(shù)據(jù)的映射。此映射也可用作對(duì)象集。
Stack 棧
和隊(duì)列相似,一個(gè)帶有數(shù)據(jù)存儲(chǔ)特性的數(shù)據(jù)結(jié)構(gòu)。
特性:存儲(chǔ)數(shù)據(jù)時(shí)先進(jìn)后出的,棧只有一個(gè)出口,只能從棧頂部增加和移除元素。
queue 隊(duì)列
特性:先進(jìn)先出(FIFO),并發(fā)中使用 ,可以安全的將對(duì)象從一個(gè)任務(wù)傳給另一個(gè)任務(wù)。
set 集合
特性:保存不重復(fù)元素。
map 字典
特性:關(guān)聯(lián)數(shù)組,也被叫做字典或者鍵值對(duì)。
graph 圖
特性:通常使用臨接矩陣和臨接表表示,前者易實(shí)現(xiàn)但是對(duì)于稀疏矩陣會(huì)浪費(fèi)較多空間,后者使用鏈表的方式存儲(chǔ)信息但是對(duì)于圖搜索時(shí)間復(fù)雜度較高。