quick implementation of SPL Priority Queue:
<?php
class PQtest extends SplPriorityQueue
{
public function compare($priority1, $priority2)
{
if ($priority1 === $priority2) return 0;
return $priority1 < $priority2 ? -1 : 1;
}
}
$objPQ = new PQtest();
$objPQ->insert('A',3);
$objPQ->insert('B',6);
$objPQ->insert('C',1);
$objPQ->insert('D',2);
echo "COUNT->".$objPQ->count()."<BR>";
//mode of extraction
$objPQ->setExtractFlags(PQtest::EXTR_BOTH);
//Go to TOP
$objPQ->top();
while($objPQ->valid()){
print_r($objPQ->current());
echo "<BR>";
$objPQ->next();
}
?>
output:
COUNT->4
Array ( [data] => B [priority] => 6 )
Array ( [data] => A [priority] => 3 )
Array ( [data] => D [priority] => 2 )
Array ( [data] => C [priority] => 1 )
کلاس SplPriorityQueue
Introduction
کلاس SplPriorityQueue عملکرد اصلی صف اولویتدار را با استفاده از heap پیاده میکند.
Class synopsis
/* Methods */
__construct
( void
)
}Table of Contents
- SplPriorityQueue::compare — مقایسه اولویتها برای درست قرار دادن اجزا heap هنگام مرتبسازی
- SplPriorityQueue::__construct — ساخت صف خالی
- SplPriorityQueue::count — شمارش تعداد اجزا در صف
- SplPriorityQueue::current — بازگرداندن گره فعلی اشاره شده توسط تکرارکننده
- SplPriorityQueue::extract — استخراج گره از بالای heap و مرتبسازی
- SplPriorityQueue::insert — وارد نمودن جز در صف مرتبسازی
- SplPriorityQueue::isEmpty — بررسی خالی بودن صف
- SplPriorityQueue::key — بازگرداندن اندیس گره فعلی
- SplPriorityQueue::next — انتقال به گره بعدی
- SplPriorityQueue::recoverFromCorruption — بازیابی حالت خراب شده و اجازه عملیات بیشتر بر صف دادن
- SplPriorityQueue::rewind — برگرداندن تکرارکننده به ابتدا
- SplPriorityQueue::setExtractFlags — تعیین حالت استخراج
- SplPriorityQueue::top — ماکزیمم در سر گره
- SplPriorityQueue::valid — بررسی دارا بودن گره بیشتر صف
rajatn at rediff dot co dot in ¶
2 years ago
