spl常用数据结构

spl:Standard PHP Library 标准PHP类库

今天主要看一下spl的数据结构,有以下知识点要先说明一下:

1)bootom:最先添加到链表中的节点叫buttom(底部),也叫头部(head)

2)top:最后添加到链表中的节点叫top(顶部),也称尾部

3)链表指针:是一个当前关注节点的标识,可以指向任意节点

4)当前节点:链表指针指向的节点叫当前节点

spl常用数据结构:

spl常用数据结构_第1张图片

一.链表结构

就像一个链条一样一环接一环,无论正向反向都与下个链环有关,像微博好友,a关注b,b同时也可以关注a

push(1);  //把新节点添加到链条顶部(top)
$obj->push(2);
$obj->push(3);
$obj->push(4);  //把新节点添加到链条底部(bottom)

$obj->rewind(); //rewind指针用于把节点指针指向bottom所在节点
echo '‘current:'’ . $obj->rewind(); //获取节点指针指向节点

$obj->next();
echo 'next:' . $obj->current(); //指向下一个节点的值,当下节点不存在,则返回空数据

$obj->prev(); //指向上一个节点

$obj->valid(); //如果当前节点是有效节点,则valid返回true,否则返回false

$obj->pop(); //把当前节点从链表中删除并返回,如果current正好指向pop位置,那么调用pop后会失效
$obj->current();

$obj->shift();  //把bottom链表位置的节点从链表删除并返回
$obj->unshift(); 

spl常用数据结构_第2张图片

二.数据堆栈:原理---先进的后出

spl常用数据结构_第3张图片

 push('a');
$satck -> push('b');
$satck -> push('c');
echo 'bottom:'.$stack->bottom();
echo 'top:'.$stack->top();

//堆栈的offset=0是top所在位置,offset=1是top位置节点靠近bottom的相邻节点,以此类推
$stack -> offsetSet(0,'C'); 

//堆栈的rewind和双向链表的刚好相反,堆栈rewind使指针指向top所在位置,而双向链表指向bottom所在位置
$stack -> rewind();

//堆栈的next操作使指针指向bottom所在位置,而双向链表则指向top所在位置,next不会删除元素
$stack -> next();
$stack -> pop(); //删除堆栈top位置所在元素

 三.队列:最先进入队列的数据最先出(排队)

spl常用数据结构_第4张图片

 enqueue('a');  //存储方式和链表及堆栈相同,不过存储函数不同
$obj -> enqueue('b');  //获取bottom和top的节点也相同
$obj -> enqueue('c');

$obj -> offsetSet(0,'A');//队列里offset=0是指向bottom所在节点,offset=1指向top方向相邻节点

$obj -> rewind(); //队列里面的rewind使指针指向bottom所在位置的节点

$obj ->next(); //next使得当前指针指向top方向下一个节点

$obj -> dequeue();//dequeue从队列中提取bottom位置所在节点,并返回,同时删除此元素

 

你可能感兴趣的:(spl)