PHP
SPL中SplQueue类就是实现队列操作 , 和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现 。
SplQueue类摘要如下:
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的类摘要如下:
SplPriorityQueue简单使用:
$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程序,使用while循环计算4096是2的几次方,然后输出结果$j=1;
$x=2;
while($j)
{
$x=$x*2;
【用php堆栈数据结构 php堆和栈】$j++;
if($x==4096){
echo $j;
break;
}
}
扩展资料:
PHP优点:
流行,容易上手
PHP是目前最流行的编程语言,这毋庸置疑 。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP 。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂 , 表达能力相当灵活 。
开发职位很多
在服务器端的网站编程中PHP会更容易帮助你找到工作 。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的 。
仍然在不断发展
PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架 。版本是7之后 , 一直在提供更高性能的应用 。
可植入性强
PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快 。
拓展性强
PHP 语言在数据库应用过程中 , 可以从数据库调取各类数据,执行效率高 。
缺点
PHP的解释运行机制
在 PHP 中,所有的变量都是页面级的,无论是全局变量, 还是类的静态成员,都会在页面执行完毕后被清空 。
设计缺陷,缺少关注PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入 。没有一个明确的设计哲学 。早期的PHP受到Perl的影响,带有out参数的标准库又是有C语言引入,面向对象的部分又是从 C++和Java学来的 。
对递归的不良支持
推荐阅读
- chatgpt数据分析办公,数据分析公具
- 手机上怎么给手机u盘加密,手机怎样给u盘加密
- js带格式化的日期,js格式化日期yyyymmdd hhmmss
- 如何换excel版本,excel怎么换新版本
- 怎么查找mysql的密码 mysql如何查询密码
- linux命令程序打包,linux 程序打包
- 直播卖货改错价怎么办,直播改错价格
- php怎么更新多个数据 php怎么更新多个数据类型
- html5缩进,html5首行缩进代码