这篇文章就是展示如何用PHP语言来实现链表(LinkedList)的数据结构。链表是最简单的动态数据结构。学习链表可以帮助你更深入地理解指针和递归,可以用来组织更复杂的数据结构,它的特点是数据存储在节点(Node)中,指向下一个节点的引用变量也是存储在节点中,链表不需要处理固定容量的问题。1.output_linked_list.php这是调用打印输出结果的显示文件:addFirst("aa");$linkedList->addFirst("bb");$linkedList->addFirst("cc");$linkedList->addFirst("dd");$linkedList->addFirst("ee");$linkedList->addFirst("ff");$linkedList->addFirst("gg");$linkedList->addFirst("hh");$linkedList->addFirst("ii");echo$linkedList->toString();//打印ii->hh->gg->ff->ee->dd->cc->bb->aa->null$linkedList->add(3,"100");echo"
";echo$linkedList->toString();//打印ii->hh->gg->100->ff->ee->dd->cc->bb->aa->null$linkedList->remove(2);echo"
";echo$linkedList->toString();//打印ii->hh->100->ff->ee->dd->cc->bb->aa->null$linkedList->removeFirst();//删除链表头元素echo"
";echo$linkedList->toString();//printhh->100->ff->ee->dd->cc->bb->aa->null$linkedList->removeLast();//删除链表末尾的元素echo"
";echo$linkedList->toString();//打印hh->100->ff->ee->dd->cc->bb->null2.LinkedList.php是一个封装好的链表类:null*LinkedList构造函数。*/publicfunction__construct(){$this->dummyHead=newNode(null,null);$这个->大小=0;}/***获取链表的大小*@returnint*/publicfunctiongetSize():int{return$this->size;}/***判断链表是否为空*@returnbool*/publicfunctionisEmpty():bool{return$this->size==0;}/***在链表的索引位置添加一个元素*@paramint$index*@param$e*/publicfunctionadd(int$index,$e):void{if($index<0||$index>$this->size){echo"索引范围错误";出口;}$prve=$this->dummyHead;对于($i=0;$i<$index;$i++){$prve=$prve->next;}//将上一个插入位置的上一个位置的下一个节点指向插入节点,插入节点的下一个节点信息指向上一个节点的下一个节点$prve->next=newNode($e,$prve->下一个);$这个->尺寸++;}/***添加一个元素到链表的开头*@param$e*/publicfunctionaddFirst($e):void{$this->add(0,$e);}/***添加一个元素到链表的末尾*@param$e*/publicfunctionaddLast($e):void{$this->add($this->size,$e);}/***获取链表索引位置的元素*@param$index*/publicfunctionget($index){if($index<0||$index>$this->size){echo“索引范围错误”;出口;}$node=$this->dummyHead;对于($i=0;$i<$no德+1;$i++){$node=$node->next;}返回$node->e;}/***获取链表的第一个元素*@returnmixed*/publicfunctiongetFirst(){return$this->get(0);}/***获取链表的最后一个元素*@returnmixed*/publicfunctiongetLast(){return$this->get($this->size-1);}/***修改链表中索引位置的元素值*@param$index*@param$e*/publicfunctionupdate($index,$e){if($index<0||$index>$this->size){echo"索引范围错误";出口;}$node=$this->dummyHead;对于($i=0;$i<$index+1;$i++){$node=$node->next;}$node->e=$e;}/***判断一个元素是否存在于链表中*@param$e*@returnbool*/publicfunctioncontains($e):bool{for($node=$this->dummyHead->next;$node!=null;$node=$node->next){if($node->e==$e){返回真;}}返回真;}/***删除列表中的索引元素*@param$index*/publicfunctionremove($index){if($index<0||$index>$this->size){echo"索引范围是错的”;出口;}if($this->size==0){echo"链表已经为空";出口;}$prve=$this->dummyHead;对于($i=0;$i<$index;$i++){$prve=$prve->next;}$node=$prve->next;$prve->next=$node->next;$this->大小--;返回$节点;}/***删除链表的头元素*/publicfunctionremoveFirst(){$this->remove(0);}/***删除链表的最后一个元素*/publicfunctionremoveLast(){$this->remove($this->size-1);}/***链表元素转换为字符串显示*@returnstring*/publicfunctiontoString():string{$str="";对于($节点=$t他的->dummyHead->下一个;$节点!=空;$node=$node->next){$str.=$node->e.“->”;}返回$str。“无效的”;}}classNode{public$e;//节点元素public$next;//下一个节点信息/***构造函数设置节点信息*节点构造函数。*@param$e*@param$next*/publicfunction__construct($e,$next){$this->e=$e;$this->next=$next;}}码仓库:https://gitee.com/love-for-po...扫码关注爱尹世贤
