当前位置: 首页 > 后端技术 > PHP

【SPL标准库专题(五)】数据结构:SplDoublyLinkedList

时间:2023-03-30 01:11:57 PHP

简而言之,双向链表是一种重要的线性存储结构。对于双链表中的每个节点,它不仅保存了自己的信息,还保存了前后节点的地址。类概要SplDoublyLinkedListimplementsIterator,ArrayAccess,Countable{public__construct(void)publicvoidadd(mixed$index,mixed$newval)//双链表头节点publicmixedtop(void)//双链表尾节点publicmixedbottom(void)//双链表的元素个数publicintcount(void)//检查双链表是否为空publicboolisEmpty(void)//当前节点索引publicmixedkey(void)//移动到上一个柱形记录publicvoidprev(void)//移动到下一个记录publicvoidnext(void)//当前记录publicmixedcurrent(void)//将指针指向迭代的开始publicvoidrewind(void)//检查双链表是否还有节点publicboolvalid(void)//指定索引处是否有节点publicbooloffsetExists(mixed$index)//获取该节点的值specifiedindexpublicmixedoffsetGet(mixed$index)//设置值在指定索引publicvoidoffsetSet(mixed$index,mixed$newval)//删除指定索引处的节点publicvoidoffsetUnset(mixed$index)//from弹出双链表尾部元素publicmixedpop(void)//向双链表尾部添加元素publicvoidpush(mixed$value)//序列化存储publicstringserialize(void)//反序列化publicvoidunserialize(string$serialized)//设置迭代模式publicvoidsetIteratorMode(int$mode)//获取迭代模式SplDoublyLinkedList::IT_MODE_LIFO(Stackstyle)SplDoublyLinkedList::IT_MODE_FIFO(Queuestyle)publicintgetIteratorMode(void)//双链表头移除元素publicmixedshift(void)//向双链表头添加元素publicvoidunshift(mixed$value)}实现Iterator接口,可以快速实现迭代;实现ArrayAccess接口,可以像访问数组一样访问链表数据;$list=newSplDoublyLinkedList();$list->push('a');$list->push('b');$list->push('c');$list->push('d');#方法看名字就可以理解,主要介绍以下几个地方;/*#此时的链表结构[0]=>a[1]=>b[2]=>c[3]=>d*/$list->add(1,'z');//由于实现了ArrayAccess接口,可以像操作数组一样操作数据;echo$list[2];/*#此时的链表结构[0]=>a[1]=>z[2]=>b[3]=>c[4]=>d*///设置迭代模式为迭代↓↓;$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);$??ite??ratorMode=$list->getIteratorMode();//获取当前迭代模式/*#关于模式IT_MODE_LIFO:栈式,后进先出,堆结构IT_MODE_FIFO:队列式,先进先出,队列结构(默认)迭代器遍历元素正常迭代,不删除(默认)*///↓↓设置删除元素时是否迭代$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_DELETE);for($list->rewind());$list->valid();$list->next()){echo$list->current()."\n";}for($list->rewind();$list->valid();$list->next()){echo$list->current()."\n";}other方法手册看名字就明白了,就不解释了:http://php.网络/手册/zh/类...