今天就跟大家聊聊有關(guān) 雙鏈表如何在PHP項(xiàng)目中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的丹江口網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!雙鏈表是一種重要的線性存儲(chǔ)結(jié)構(gòu),對(duì)于雙鏈表中的每個(gè)節(jié)點(diǎn),不僅僅存儲(chǔ)自己的信息,還要保存前驅(qū)和后繼節(jié)點(diǎn)的地址。
PHP SPL中的SplDoublyLinkedList類提供了對(duì)雙鏈表的操作。
SplDoublyLinkedList類摘要如下:
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 ) //檢測(cè)雙鏈表是否為空 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 ) //序列化存儲(chǔ) 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 ) }
使用起來(lái)也是簡(jiǎn)單
$list = new SplDoublyLinkedList(); $list->push('a'); $list->push('b'); $list->push('c'); $list->unshift('top'); $list->shift(); print_r(array( 'pop' => $list->pop(), 'count' => $list->count(), 'isEmpty' => $list->isEmpty(), 'bottom' => $list->bottom(), 'top' => $list->top() )); $list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO); print_r($list->getIteratorMode()); for($list->rewind(); $list->valid(); $list->next()) { echo $list->current().PHP_EOL; } print_r($a = $list->serialize()); //print_r($list->unserialize($a)); $list->offsetSet(0,'new one'); $list->offsetUnset(0); print_r(array( 'offsetExists' => $list->offsetExists(4), 'offsetGet' => $list->offsetGet(0), )); print_r($list);
看完上述內(nèi)容,你們對(duì) 雙鏈表如何在PHP項(xiàng)目中使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。