gpt4 book ai didi

PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO).

PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

PHP SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现。 SplQueue类摘要如下:

PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

SplQueue简单使用如下:

  。

复制代码 代码如下:

$queue = new SplQueue();
 
/**
 * 可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
 * (1)SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP  (默认值,迭代后数据保存)
 * (2)SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE (迭代后数据删除)
 */
$queue->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE);
 
//SplQueue::enqueue()其实就是 SplDoublyLinkedList::push()
$queue->enqueue('a');
$queue->enqueue('b');
$queue->enqueue('c');
 
//SplQueue::dequeue()其实就是 SplDoublyLinkedList::shift()
print_r($queue->dequeue());
 
foreach($queue as $item) {
    echo $item . PHP_EOL;
}
 
print_r($queue);

  。

而优先队列SplPriorityQueue是基于堆(后文介绍)实现的。 SplPriorityQueue的类摘要如下:

PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

SplPriorityQueue简单使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$pq = new SplPriorityQueue();
 
$pq ->insert( 'a' , 10);
$pq ->insert( 'b' , 1);
$pq ->insert( 'c' , 8);
 
echo $pq -> count () .PHP_EOL; //3
echo $pq ->current() . PHP_EOL; //a
 
/**
  * 设置元素出队模式
  * SplPriorityQueue::EXTR_DATA 仅提取值
  * SplPriorityQueue::EXTR_PRIORITY 仅提取优先级
  * SplPriorityQueue::EXTR_BOTH 提取数组包含值和优先级
  */
$pq ->setExtractFlags(SplPriorityQueue::EXTR_DATA);
 
while ( $pq ->valid()) {
   print_r( $pq ->current()); //a c b
   $pq ->next();
}

  。

最后此篇关于PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例的文章就讲到这里了,如果你想了解更多关于PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com