PHP 雙鏈表(SplDoublyLinkedList)簡介和使用執行個體_php執行個體

來源:互聯網
上載者:User

雙鏈表是一種重要的線性儲存結構,對於雙鏈表中的每個節點,不僅僅儲存自己的資訊,還要儲存前驅和後繼節點的地址。

PHP SPL中的SplDoublyLinkedList類提供了對雙鏈表的操作。
SplDoublyLinkedList類摘要如下:

SplDoublyLinkedList implements Iterator  , ArrayAccess  , Countable  {   public __construct ( void )  public void add ( mixed $index , mixed $newval )  //雙鏈表的頭部節點  public mixed top ( void )  //雙鏈表的尾部節點  public mixed bottom ( void )  //雙聯表元素的個數  public int count ( void )  //檢測雙鏈表是否為空白  public bool isEmpty ( void )    //當前節點索引  public mixed key ( void )  //移到上條記錄  public void prev ( void )  //移到下條記錄  public void next ( void )  //目前記錄  public mixed current ( void )  //將指標指向迭代開始處  public void rewind ( void )  //檢查雙鏈表是否還有節點  public bool valid ( void )   //指定index處節點是否存在  public bool offsetExists ( mixed $index )  //擷取指定index處節點值  public mixed offsetGet ( mixed $index )  //設定指定index處值  public void offsetSet ( mixed $index , mixed $newval )  //刪除指定index處節點  public void offsetUnset ( mixed $index )   //從雙鏈表的尾部彈出元素  public mixed pop ( void )  //添加元素到雙鏈表的尾部  public void push ( mixed $value )   //序列化儲存  public string serialize ( void )  //還原序列化  public void unserialize ( string $serialized )   //設定迭代模式  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 ) }

使用起來也是簡單

$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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.