摘要:簡述雙鏈表是一種重要的線性存儲結(jié)構(gòu),對于雙鏈表中的每個(gè)節(jié)點(diǎn),不僅僅存儲自己的信息,還要保存前驅(qū)和后繼節(jié)點(diǎn)的地址。
簡述
雙鏈表是一種重要的線性存儲結(jié)構(gòu),對于雙鏈表中的每個(gè)節(jié)點(diǎn),不僅僅存儲自己的信息,還要保存前驅(qū)和后繼節(jié)點(diǎn)的地址。
類摘要SplDoublyLinkedList implements Iterator , ArrayAccess , Countable { public __construct ( void ) public void add ( mixed $index , mixed $newval ) //雙鏈表的頭部節(jié)點(diǎn) public mixed top ( void ) //雙鏈表的尾部節(jié)點(diǎn) public mixed bottom ( void ) //雙聯(lián)表元素的個(gè)數(shù) public int count ( void ) //檢測雙鏈表是否為空 public bool isEmpty ( void ) //當(dāng)前節(jié)點(diǎn)索引 public mixed key ( void ) //移到上條記錄 public void prev ( void ) //移到下條記錄 public void next ( void ) //當(dāng)前記錄 public mixed current ( void ) //將指針指向迭代開始處 public void rewind ( void ) //檢查雙鏈表是否還有節(jié)點(diǎn) public bool valid ( void ) //指定index處節(jié)點(diǎn)是否存在 public bool offsetExists ( mixed $index ) //獲取指定index處節(jié)點(diǎn)值 public mixed offsetGet ( mixed $index ) //設(shè)置指定index處值 public void offsetSet ( mixed $index , mixed $newval ) //刪除指定index處節(jié)點(diǎn) public void offsetUnset ( mixed $index ) //從雙鏈表的尾部彈出元素 public mixed pop ( void ) //添加元素到雙鏈表的尾部 public void push ( mixed $value ) //序列化存儲 public string serialize ( void ) //反序列化 public void unserialize ( string $serialized ) //設(shè)置迭代模式 public void setIteratorMode ( int $mode ) //獲取迭代模式SplDoublyLinkedList::IT_MODE_LIFO (Stack style) SplDoublyLinkedList::IT_MODE_FIFO (Queue style) public int getIteratorMode ( void ) //雙鏈表的頭部移除元素 public mixed shift ( void ) //雙鏈表的頭部添加元素 public void unshift ( mixed $value ) }
實(shí)現(xiàn)了Iterator接口,可以快速實(shí)現(xiàn)迭代;
實(shí)現(xiàn)了 ArrayAccess 接口, 可以如數(shù)組般訪問鏈表數(shù)據(jù);
$list = new SplDoublyLinkedList(); $list->push("a"); $list->push("b"); $list->push("c"); $list->push("d"); # 方法看看名稱就能理解了,主要介紹以下幾個(gè)地方; /* # 此時(shí)的鏈表結(jié)構(gòu) [0] => a [1] => b [2] => c [3] => d */ $list->add(1,"z"); // 由于實(shí)現(xiàn)了接口ArrayAccess所以可以像操作數(shù)組那樣操作數(shù)據(jù); echo $list[2]; /* # 此時(shí)的鏈表結(jié)構(gòu) [0] => a [1] => z [2] => b [3] => c [4] => d */ //設(shè)置一個(gè)迭代模式進(jìn)行迭代↓↓; $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO); $iteratorMode = $list->getIteratorMode(); //獲取當(dāng)前的迭代模式 /* # 關(guān)于模式 IT_MODE_LIFO: Stack style, 后入先出,堆結(jié)構(gòu) IT_MODE_FIFO: Queue style, 先入先出,隊(duì)列結(jié)構(gòu)(默認(rèn)) IT_MODE_DELETE: Elements are deleted by the iterator 一邊迭代,一邊刪除 IT_MODE_KEEP: Elements are traversed by the iterator 普通迭代,不刪除(默認(rèn)) */ // ↓↓設(shè)置是否在迭代的時(shí)候刪除元素 $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_DELETE); for ($list->rewind(); $list->valid(); $list->next()) { echo $list->current()." "; } for ($list->rewind(); $list->valid(); $list->next()) { echo $list->current()." "; }
其他的方法手冊看看名稱都能理解,就不說明了:
http://php.net/manual/zh/clas...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/31521.html
摘要:這兩個(gè)類都是繼承自,分別派生自的堆棧模式和隊(duì)列模式所以放在一起來介紹堆棧類摘要方法重寫了父類,固定為堆棧模式,然后此處只需要傳或者。 這兩個(gè)類都是繼承自SplDoublyLinkedList,分別派生自SplDoublyLinkedList的堆棧模式和隊(duì)列模式;所以放在一起來介紹; 堆棧SplStack showImg(https://segmentfault.com/img/remo...
摘要:主要是處理數(shù)組相關(guān)的主要功能,與普通不同的是,它是固定長度的,且以數(shù)字為鍵名的數(shù)組,優(yōu)勢就是比普通的數(shù)組處理更快。類摘要方法導(dǎo)入數(shù)組,返回對象把對象數(shù)組導(dǎo)出為真正的數(shù)組由于是定長數(shù)組,所以超過定長就會拋出異常。 SplFixedArray主要是處理數(shù)組相關(guān)的主要功能,與普通php array不同的是,它是固定長度的,且以數(shù)字為鍵名的數(shù)組,優(yōu)勢就是比普通的數(shù)組處理更快。 類摘要 SplF...
摘要:是用來存儲一組對象的,特別是當(dāng)你需要唯一標(biāo)識對象的時(shí)候。類實(shí)現(xiàn)了四個(gè)接口??蓪?shí)現(xiàn)統(tǒng)計(jì)迭代序列化數(shù)組式訪問等功能。 PHP SPL SplObjectStorage是用來存儲一組對象的,特別是當(dāng)你需要唯一標(biāo)識對象的時(shí)候。PHP SPL SplObjectStorage類實(shí)現(xiàn)了Countable,Iterator,Serializable,ArrayAccess四個(gè)接口。可實(shí)現(xiàn)統(tǒng)計(jì)、迭代、...
摘要:普通的隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),元素在隊(duì)列尾追加,而從隊(duì)列頭取出。在優(yōu)先隊(duì)列中,元素被賦予優(yōu)先級。當(dāng)訪問元素時(shí),具有最高優(yōu)先級的元素最先取出。優(yōu)先隊(duì)列具有最高級先出,的行為特征。 普通的隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),元素在隊(duì)列尾追加,而從隊(duì)列頭取出。在優(yōu)先隊(duì)列中,元素被賦予優(yōu)先級。當(dāng)訪問元素時(shí),具有最高優(yōu)先級的元素最先取出。優(yōu)先隊(duì)列具有最高級先出 (largest-in,first...
摘要:堆就是為了實(shí)現(xiàn)優(yōu)先隊(duì)列而設(shè)計(jì)的一種數(shù)據(jù)結(jié)構(gòu),它是通過構(gòu)造二叉堆二叉樹的一種實(shí)現(xiàn)。根節(jié)點(diǎn)最大的堆叫做最大堆或大根堆,根節(jié)點(diǎn)最小的堆叫做最小堆或小根堆。二叉堆還常用于排序堆排序。 堆(Heap)就是為了實(shí)現(xiàn)優(yōu)先隊(duì)列而設(shè)計(jì)的一種數(shù)據(jù)結(jié)構(gòu),它是通過構(gòu)造二叉堆(二叉樹的一種)實(shí)現(xiàn)。根節(jié)點(diǎn)最大的堆叫做最大堆或大根堆,根節(jié)點(diǎn)最小的堆叫做最小堆或小根堆。二叉堆還常用于排序(堆排序)。 showImg(...
閱讀 3602·2021-11-18 10:02
閱讀 1016·2021-09-04 16:48
閱讀 2078·2019-08-30 15:55
閱讀 3590·2019-08-30 15:52
閱讀 1875·2019-08-30 14:08
閱讀 3616·2019-08-30 13:19
閱讀 1214·2019-08-27 10:53
閱讀 3183·2019-08-26 12:11