亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

mindwind / 3442人閱讀

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

普通的隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),元素在隊(duì)列尾追加,而從隊(duì)列頭取出。在優(yōu)先隊(duì)列中,元素被賦予優(yōu)先級(jí)。當(dāng)訪問元素時(shí),具有最高優(yōu)先級(jí)的元素最先取出。優(yōu)先隊(duì)列具有最高級(jí)先出 (largest-in,first-out)的行為特征。
總結(jié)下來就是普通隊(duì)列有先進(jìn)先出原則,優(yōu)先級(jí)隊(duì)列有優(yōu)先級(jí)高先出原則,這個(gè)優(yōu)先級(jí)可以設(shè)置;

類摘要
// 1. 沒有實(shí)現(xiàn)ArrayAccess接口,所以不能像數(shù)組那樣操作;
SplPriorityQueue implements Iterator , Countable {
  /* 方法 */
  public __construct ( void )

  // 比較方法,內(nèi)部應(yīng)該用到了冒泡排序,對(duì)于權(quán)重值來說,返回0代表相等,返回正整數(shù)就代表大于,返回負(fù)整數(shù)就代表小于;
  // 默認(rèn)是權(quán)重值越優(yōu)先,也可以讓其被子類覆蓋改為權(quán)重值越小越優(yōu)先
  public int compare ( mixed $priority1 , mixed $priority2 )
  public mixed extract ( void )

  //恢復(fù)到上一個(gè)被破壞的節(jié)點(diǎn)? 測(cè)試無用;
  public void recoverFromCorruption ( void )
  public void setExtractFlags ( int $flags )
  public void insert ( mixed $value , mixed $priority )

  public int count ( void )
  public mixed current ( void )
  public bool isEmpty ( void )
  public mixed key ( void )
  public void next ( void )
  public void rewind ( void )
  public mixed top ( void )
  public bool valid ( void )
}
Example
class PQtest extends SplPriorityQueue
{
  //覆蓋父類,更改其優(yōu)先規(guī)則為權(quán)重值越小越優(yōu)先;
  public function compare($priority1, $priority2)
  {
    if ($priority1 === $priority2) return 0;
    return $priority1 > $priority2 ? -1 : 1;
  }
}

$pq = new PQtest();

// 設(shè)置值與優(yōu)先值
$pq->insert("a", 10);
$pq->insert("b", 1);
$pq->insert("c", 8);

/**
 * 設(shè)置元素出隊(duì)模式
 * SplPriorityQueue::EXTR_DATA 僅提取值
 * SplPriorityQueue::EXTR_PRIORITY 僅提取優(yōu)先級(jí)
 * SplPriorityQueue::EXTR_BOTH 提取數(shù)組包含值和優(yōu)先級(jí)
 */
$pq->setExtractFlags(PQtest::EXTR_BOTH);

//從頂部取出一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)下面的節(jié)點(diǎn)移上為頂部節(jié)點(diǎn);
print_r(
  $pq->extract()
);
/*
  [data] => b
  [priority] => 1
 */

$pq->recoverFromCorruption();

//拿出頂部節(jié)點(diǎn)
print_r(
  $pq->extract()
);

/*
  [data] => c
  [priority] => 8
 */

// 還原自上一個(gè)節(jié)點(diǎn)? 沒什么效果?
$pq->recoverFromCorruption();

print_r(
  $pq->current()
);

$pq->rewind();
while($pq->valid()){
  print_r($pq->current());
  echo PHP_EOL;
  $pq -> next();
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/31559.html

相關(guān)文章

  • SPL標(biāo)準(zhǔn)專題(10)】DatastructuresSplObjectStorage

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

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

    摘要:主要是處理數(shù)組相關(guān)的主要功能,與普通不同的是,它是固定長度的,且以數(shù)字為鍵名的數(shù)組,優(yōu)勢(shì)就是比普通的數(shù)組處理更快。類摘要方法導(dǎo)入數(shù)組,返回對(duì)象把對(duì)象數(shù)組導(dǎo)出為真正的數(shù)組由于是定長數(shù)組,所以超過定長就會(huì)拋出異常。 SplFixedArray主要是處理數(shù)組相關(guān)的主要功能,與普通php array不同的是,它是固定長度的,且以數(shù)字為鍵名的數(shù)組,優(yōu)勢(shì)就是比普通的數(shù)組處理更快。 類摘要 SplF...

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

    摘要:堆就是為了實(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(...

    chadLi 評(píng)論0 收藏0
  • SPL標(biāo)準(zhǔn)專題(6)】DatastructuresSplStack & SplQueu

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

    TigerChain 評(píng)論0 收藏0
  • SPL標(biāo)準(zhǔn)專題(5)】DatastructuresSplDoublyLinkedList

    摘要:簡述雙鏈表是一種重要的線性存儲(chǔ)結(jié)構(gòu),對(duì)于雙鏈表中的每個(gè)節(jié)點(diǎn),不僅僅存儲(chǔ)自己的信息,還要保存前驅(qū)和后繼節(jié)點(diǎn)的地址。 簡述 雙鏈表是一種重要的線性存儲(chǔ)結(jié)構(gòu),對(duì)于雙鏈表中的每個(gè)節(jié)點(diǎn),不僅僅存儲(chǔ)自己的信息,還要保存前驅(qū)和后繼節(jié)點(diǎn)的地址。 showImg(https://segmentfault.com/img/remote/1460000019231932?w=813&h=236); 類摘要 ...

    luckyw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<