PHP实现双链表删除与插入节点的方法示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-08-19 10:12:02 浏览: 评论:0
这篇文章主要介绍了PHP实现双链表删除与插入节点的方法,结合实例形式分析了PHP双链表的定义与节点操作相关实现技巧,需要的朋友可以参考下。
本文实例讲述了PHP实现双链表删除与插入节点的方法,分享给大家供大家参考,具体如下:
概述:
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱,所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
实现代码:
- <?php
- class node{
- public $prev;
- public $next;
- public $data;
- public function __construct($data,$prev=null,$next=null){
- $this->data=$data;
- $this->prev=$prev;
- $this->next=$next;
- }
- }
- class doubleLinkList{
- private $head;
- public function __construct()
- {
- $this->head=new node("head",null,null);
- }
- //插入节点
- public function insertLink($data){
- $p=new node($data,null,null);
- $q=$this->head->next;
- $r=$this->head;
- while($q){
- if($q->data>$data){
- $q->prev->next=$p;
- $p->prev=$q->prev;
- $p->next=$q;
- $q->prev=$p;
- }else{
- $r=$q;$q=$q->next;
- }
- }
- if($q==null){
- $r->next=$p;
- $p->prev=$r;
- }
- }
- //从头输出节点
- public function printFromFront(){
- $p=$this->head->next;
- $string="";
- while($p){
- $string.=$string?",":"";
- $string.=$p->data;
- $p=$p->next;
- }
- echo $string."<br>";
- }
- //从尾输出节点
- public function printFromEnd(){
- $p=$this->head->next;
- $r=$this->head;
- while($p){
- $r=$p;$p=$p->next;
- }
- $string="";
- while($r){
- $string.=$string?",":"";
- $string.=$r->data;
- $r=$r->prev;
- }
- echo $string."<br>";
- }
- public function delLink($data){
- $p=$this->head->next;
- if(!$p)
- return;
- while($p){
- if($p->data==$data)
- {
- $p->next->prev=$p->prev;
- $p->prev->next=$p->next;
- unset($p);
- return;
- }
- else{
- $p=$p->next;
- }
- }
- if($p==null)
- echo "没有值为{$data}的节点";
- }
- }
- $link=new doubleLinkList();
- $link->insertLink(1);
- $link->insertLink(2);
- $link->insertLink(3);
- $link->insertLink(4);
- $link->insertLink(5);
- $link->delLink(3);
- $link->printFromFront();
- $link->printFromEnd();
- $link->delLink(6);
运行结果:
1,2,4,5
5,4,2,1,head
没有值为6的节点
Tags: PHP双链表删除 PHP插入节点
- 上一篇:PHP实现基于栈的后缀表达式求值功能
- 下一篇:PHP 断点续传实例详解
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)