成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【SPL標(biāo)準(zhǔn)庫專題(5)】Datastructures:SplDoublyLinkedList

luckyw / 556人閱讀

摘要:簡述雙鏈表是一種重要的線性存儲結(jié)構(gòu),對于雙鏈表中的每個節(jié)點,不僅僅存儲自己的信息,還要保存前驅(qū)和后繼節(jié)點的地址。

簡述

雙鏈表是一種重要的線性存儲結(jié)構(gòu),對于雙鏈表中的每個節(jié)點,不僅僅存儲自己的信息,還要保存前驅(qū)和后繼節(jié)點的地址。

類摘要
SplDoublyLinkedList  implements Iterator   , ArrayAccess   , Countable   {
 
    public __construct  ( void )
    public void add  ( mixed  $index  , mixed  $newval  )
    //雙鏈表的頭部節(jié)點
    public mixed top  ( void )
    //雙鏈表的尾部節(jié)點
    public mixed bottom  ( void )
    //雙聯(lián)表元素的個數(shù)
    public int count  ( void )
    //檢測雙鏈表是否為空
    public bool isEmpty  ( void )
 
    //當(dāng)前節(jié)點索引
    public mixed key  ( void )
    //移到上條記錄
    public void prev  ( void )
    //移到下條記錄
    public void next  ( void )
    //當(dāng)前記錄
    public mixed current  ( void )
    //將指針指向迭代開始處
    public void rewind  ( void )
    //檢查雙鏈表是否還有節(jié)點
    public bool valid  ( void )
 
    //指定index處節(jié)點是否存在
    public bool offsetExists  ( mixed  $index  )
    //獲取指定index處節(jié)點值
    public mixed offsetGet  ( mixed  $index  )
    //設(shè)置指定index處值
    public void offsetSet  ( mixed  $index  , mixed  $newval  )
    //刪除指定index處節(jié)點
    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  )
 
}

實現(xiàn)了Iterator接口,可以快速實現(xiàn)迭代;

實現(xiàn)了 ArrayAccess 接口, 可以如數(shù)組般訪問鏈表數(shù)據(jù);

$list = new SplDoublyLinkedList();
$list->push("a");
$list->push("b");
$list->push("c");
$list->push("d");

# 方法看看名稱就能理解了,主要介紹以下幾個地方;
/*
  # 此時的鏈表結(jié)構(gòu)
  [0] => a
  [1] => b
  [2] => c
  [3] => d
*/

$list->add(1,"z");

// 由于實現(xiàn)了接口ArrayAccess所以可以像操作數(shù)組那樣操作數(shù)據(jù);
echo $list[2];

/*
  # 此時的鏈表結(jié)構(gòu)
  [0] => a
  [1] => z
  [2] => b
  [3] => c
  [4] => d
*/

//設(shè)置一個迭代模式進行迭代↓↓;
$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, 先入先出,隊列結(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è)置是否在迭代的時候刪除元素
$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://systransis.cn/yun/31521.html

相關(guān)文章

  • SPL標(biāo)準(zhǔn)專題(6)】DatastructuresSplStack & SplQueu

    摘要:這兩個類都是繼承自,分別派生自的堆棧模式和隊列模式所以放在一起來介紹堆棧類摘要方法重寫了父類,固定為堆棧模式,然后此處只需要傳或者。 這兩個類都是繼承自SplDoublyLinkedList,分別派生自SplDoublyLinkedList的堆棧模式和隊列模式;所以放在一起來介紹; 堆棧SplStack showImg(https://segmentfault.com/img/remo...

    TigerChain 評論0 收藏0
  • SPL標(biāo)準(zhǔn)專題(9)】DatastructuresSplFixedArray

    摘要:主要是處理數(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...

    lindroid 評論0 收藏0
  • SPL標(biāo)準(zhǔn)專題(10)】DatastructuresSplObjectStorage

    摘要:是用來存儲一組對象的,特別是當(dāng)你需要唯一標(biāo)識對象的時候。類實現(xiàn)了四個接口??蓪崿F(xiàn)統(tǒng)計迭代序列化數(shù)組式訪問等功能。 PHP SPL SplObjectStorage是用來存儲一組對象的,特別是當(dāng)你需要唯一標(biāo)識對象的時候。PHP SPL SplObjectStorage類實現(xiàn)了Countable,Iterator,Serializable,ArrayAccess四個接口??蓪崿F(xiàn)統(tǒng)計、迭代、...

    ConardLi 評論0 收藏0
  • SPL標(biāo)準(zhǔn)專題(7)】DatastructuresSplPriorityQueue

    摘要:普通的隊列是一種先進先出的數(shù)據(jù)結(jié)構(gòu),元素在隊列尾追加,而從隊列頭取出。在優(yōu)先隊列中,元素被賦予優(yōu)先級。當(dāng)訪問元素時,具有最高優(yōu)先級的元素最先取出。優(yōu)先隊列具有最高級先出,的行為特征。 普通的隊列是一種先進先出的數(shù)據(jù)結(jié)構(gòu),元素在隊列尾追加,而從隊列頭取出。在優(yōu)先隊列中,元素被賦予優(yōu)先級。當(dāng)訪問元素時,具有最高優(yōu)先級的元素最先取出。優(yōu)先隊列具有最高級先出 (largest-in,first...

    mindwind 評論0 收藏0
  • SPL標(biāo)準(zhǔn)專題(8)】DatastructuresSplHeap & SplMaxHe

    摘要:堆就是為了實現(xiàn)優(yōu)先隊列而設(shè)計的一種數(shù)據(jù)結(jié)構(gòu),它是通過構(gòu)造二叉堆二叉樹的一種實現(xiàn)。根節(jié)點最大的堆叫做最大堆或大根堆,根節(jié)點最小的堆叫做最小堆或小根堆。二叉堆還常用于排序堆排序。 堆(Heap)就是為了實現(xiàn)優(yōu)先隊列而設(shè)計的一種數(shù)據(jù)結(jié)構(gòu),它是通過構(gòu)造二叉堆(二叉樹的一種)實現(xiàn)。根節(jié)點最大的堆叫做最大堆或大根堆,根節(jié)點最小的堆叫做最小堆或小根堆。二叉堆還常用于排序(堆排序)。 showImg(...

    chadLi 評論0 收藏0

發(fā)表評論

0條評論

luckyw

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<