spl常用数据结构

spl:Standard PHP Library 标准PHP类库

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

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

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

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

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

spl常用数据结构:

一.链表结构

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

<?php 
$object = new splDoublyLinkedList();
$obj->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(); 

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

<?php
$stack = new SplStack();
$satck -> 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位置所在元素

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

<?php
$obj = new SplQueue();
$obj -> 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位置所在节点,并返回,同时删除此元素

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值