首页 / PHP / php标准库spl之链表,堆栈,队列
php标准库spl之链表,堆栈,队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php标准库spl之链表,堆栈,队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2979字,纯文字阅读大概需要5分钟。
内容图文
双向链表类:SplDoublyLinkedList1. 增删节点的方法
push:向链表的尾部插入一个节点
pop:获取链表中的尾部节点,并且从链表中删除这个节点;操作不改变当前指针的位置
unshift:向链表的头部插入一个节点
shift:删除一个链表头部节点
2. 指针操作方法
rewind:使链表的当前指针指向链表的头部(即bottom)
current:获得链表当前节点指针指向的元素,必须在调用之前先调用rewind。当指向的节点被删除之后,会指向一个空节点
next:让链表当前的指针指向下一个节点,curent的返回值随之改变
bottom:获得链表头部元素,当前指针位置不变
top:获得链表尾部元素,当前指针位置不变
3.其他方法(用法见堆栈类)
valid:检查链表中是否还存在节点,循环输出时,可以用作判断
count:统计链表中节点的个数
key:返回当前节点的键值
offsetSet :设置指定键的值,注意:如键为0,在链表中0指向头部即bottom,在堆栈中指向栈顶。
offunset:注销指定键的值
php
/**
* Created by 马廷广
* User: 马廷广
* Date: 2015/8/5
* Time: 10:52
*/$obj=new SplDoublyLinkedList();
$obj->push('b');
$obj->push('c');
$obj->unshift('a');
var_dump($obj);
/* array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
)
*/$obj->rewind();
var_dump($obj->current());//string(1) "a"$obj->next();
var_dump($obj->current());//string(1) "a"
var_dump($obj->bottom());//string(1) "a"
var_dump($obj->top());//string(1) "c"
var_dump($obj->pop());//string(1) "c"
var_dump($obj);
/*
* array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
*/
var_dump($obj->shift());//string(1) "a"
var_dump($obj);
/*
* array(1) {
[0]=>
string(1) "b"
}
*/
堆栈类:继承自SplDoublyLinkedList类的SplStack类
原理:堆栈类的底层是由栈实现的,栈是一种先进后出的数据结构,所以SplStack类的一些继承自SplDoublyLinkedList类的方法有一些理解上的不同,如rewind方法,spl使用rewind方法后指针将指向图中的栈顶,push和pop操作的是栈顶元素,unshift和shift操作的是栈底元素
php
/**
* Created by 马廷广
* User: 马廷广
* Date: 2015/8/5
* Time: 11:47
*/$stack=new SplStack();
$stack->push('a');
$stack->push('b');
$stack->push('c');
echo $stack->count();//3$stack->rewind();
echo $stack->current();//c$stack->offsetSet(0,'d');//offsetSet中0指向的是图中的栈顶,由栈顶向下递增1,2,3,4while($stack->valid()){
echo $stack->key()."->".$stack->current();
$stack->next();
}
/*2->d
1->b
0->a
*/
队列类:继承自SplDoublyLinkedList类的SplQueue类
enqueue:进入队列
dequeue:退出队列
队列类的rewind,offsetSet等方法类似于链表
by 马廷广
* User: 马廷广
* Date: 2015/8/5
* Time: 12:36
*/
$obj = new SplQueue();
$obj->enqueue('a');
$obj->enqueue('b');
$obj->enqueue('c');
var_dump($obj);
/* [0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
*/
$obj->unshift("d");
$obj->push('e');
var_dump($obj);
/*
* array(5) {
[0]=>
string(1) "d"
[1]=>
string(1) "a"
[2]=>
string(1) "b"
[3]=>
string(1) "c"
[4]=>
string(1) "e"
}
*/
$obj->rewind();
echo $obj->current();//d
$obj->offsetSet(0,'h');
var_dump($obj);
/*
* array(5) {
[0]=>
string(1) "h"
[1]=>
string(1) "a"
[2]=>
string(1) "b"
[3]=>
string(1) "c"
[4]=>
string(1) "e"
}
*/
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了php标准库spl之链表,堆栈,队列,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的php标准库spl之链表,堆栈,队列全部内容,希望文章能够帮你解决php标准库spl之链表,堆栈,队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。