发布于 2017-04-16 08:36:11 | 135 次阅读 | 评论: 0 | 来源: 网友投递
PHP开源脚本语言
PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。
按照百度词条的说法:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
我的理解是,双向链表中的每个数据带有两个标识(域),一个可以指向前一个数据的地址,另一个可以指向后一个数据的地址,所以相对单向链表来说,可以比较方便的查找到前一个数据和数据地址,但是比单向链表多使用了内存,也就是空间换时间的做法。
php使用SplDoublyLinkedList类可以实现双向链表。
<?php
$obj = new SplDoublyLinkedList();//建立一个双向链表对象
echo '<pre>';
$obj->push(1);//上部压入 链表中的元素为[0]=>1,
$obj->push(2);//上部压入 链表中的元素为[0]=>1,[1]=>2
$obj->push(3);//上部压入 链表中的元素为[0]=>1,[1]=>2,[2]=>3
$obj->unshift(8);//底部压入 链表中的元素为[0]=>8,[1]=>1,[2]=>2,[3]=>3
$obj->unshift(9);//底部压入 链表中的元素为[0]=>9,[1]=>8,[2]=>1,[3]=>2,[4]=>3
$obj->unshift(10);//底部压入链表中的元素为[0]=>10,[1]=>9,[2]=>8,[3]=>1,[4]=>2,[5]=>3
//此时链表中的元素自下向上依次为:[0]=>10,[1]=>9,[2]=>8,[3]=>1,[4]=>2,[5]=>3
$obj->rewind();//将指针指向底部第一个元素,这里指的是10这个元素
$obj->next();//将指针向上移动一个单位,此时指针指向9这个元素
$obj->prev();//将指针向下移动一个单位,此时指针指向10这个元素
echo $obj->bottom();//查看底部元素,此时指针位置未变
echo $obj->top();//查看上部元素,此时指针位置不变
$obj->add(1,12);//添加元素,在0的位置上添加一个12,链表中的元素为[0]=>10,[1]=>12,[2]=>9,[3]=>8,[4]=>1,[5]=>2,[6]=>3
$obj->next();
echo $obj->key();//查看当前指针位置
echo $obj->current();//查看当前指针所对应的元素
echo $obj->valid();//查看当前节点是否为有效节点,是的话,返回true;
$obj->pop();//删除最上部的一个,top,如果删除当前节点,则指针为空。
$obj->shift();//删除最底部的一个元素,bottom
贴图: