php splqueue 5.5安装,解析PHP标准库SPL数据结构

1a84094f9b2e684191b23aecc5de8680.png

SPL提供了双向链表、堆栈、队列、堆、降序堆、升序堆、优先级队列、定长数组、对象容器

952a75e0c11dbedb1813f04b2be91795.png

SplQueue 队列类

进出异端,先进先出

2fb2264025af2b4c1e02694359f0a6de.png

<?php $obj = new SplQueue();//插入一个节点到top位置$obj->enqueue(1);

$obj->enqueue(2);

$obj->enqueue(3);/**

SplQueue Object

(

[flags:SplDoublyLinkedList:private] => 4

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 2

[2] => 3

)

)

*/$obj->offsetSet(0,'C');/**

SplQueue Object

(

[flags:SplDoublyLinkedList:private] => 4

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 'C'

[1] => 2

[2] => 3

)

)

*/$obj->rewind();//从队列中返回并删除bottom位置的元素$obj->dequeue();/**

'C'

SplQueue Object

(

[flags:SplDoublyLinkedList:private] => 4

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 2

[1] => 3

)

)

*/复制代码

SplStack 堆栈类

单端进出时,后进先出,先进后出

05d357544835f6bcd3ecaa4cd0505030.png

$obj = new SplStack();/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

)

)

*///向堆栈放入一个节点到top位置$obj->push(1);

$obj->push(2);

$obj->push(3);/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 2

[2] => 3

)

)

*///堆栈的offset = 0 是Top所在的位置,offset = 1 是top节点靠近bottom位置的相邻节点$obj->offsetSet(0,'C');/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 2

[2] => 'C'

)

)

*/$obj->offsetSet(1,'B');/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 'B'

[2] => 'C'

)

)

*///堆栈的rewind使指针指向top节点,而双向链表的rewind指向bottom节点$obj->rewind();//堆栈的next是使指针向bottom方向相邻的节点移动一位,而链表是向top方向移动$obj->next();//遍历堆栈$obj->rewind();while($obj->valid()){ echo $obj->key().'=>'.$obj->current();

$obj->next();

}/**

2=>'C'

1=>'B'

0=>1

*///从堆栈中取出top位置的节点并删除$obj->pop();复制代码

SplDoublyLinkedList 双向链表类

6a74022b17636953e2c0c81ea18d861a.png

$obj = new SplDoublyLinkedList();//SplDoublyLinkedList Object ( [flags:SplDoublyLinkedList:private] => 0 [dllist:SplDoublyLinkedList:private] => Array ( ) )//把新的节点数据添加到链表的顶部Top$obj->push(1);

$obj->push(2);

$obj->push(3);//把新的节点数据添加到链表底部bottom$obj->unshift(4);/**

SplDoublyLinkedList Object

(

[flags:SplDoublyLinkedList:private] => 0

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 4

[1] => 1

[2] => 2

[3] => 3

)

)

*///在没有调用rewind()方法之前输出为nullecho 'current'.$obj->current();//输出: null//把指针指向bottom节点$obj->rewind();//获取当前指针指向的节点$obj->current();//输出: 4//将执行挪到下一个$obj->next();

$obj->current();//输出: 1$obj->prev();

$obj->current();//输出: 4//越界了$obj->next();

$obj->next();

$obj->next();

$obj->next();

$obj->current();//输出: null//判断当前节点是否有效$obj->valid()//输出: false$obj->prev();

$obj->valid()//输出: true$obj->shift();//把top节点从链表中删除并返回$obj->pop();//输出 3//把bottom节点从链表中删除并返回$obj->shift();//输出 4//返回top节点$obj->top();//返回bottom节点$obj->bottom();复制代码

感谢您的阅读,如果对您有帮助,欢迎关注”CRMEB”。码云上有我们开源的商城项目,知识付费项目,均是基于PHP+vue开发,学习研究欢迎使用,关注我们保持联系!

想了解更多编程学习,敬请关注php培训栏目!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值