zoukankan      html  css  js  c++  java
  • [PHP] 数据结构-链表创建-插入-删除-查找的PHP实现

    链表获取元素
    1.声明结点p指向链表第一个结点,j初始化1开始
    2.j<i,p指向下一结点,因为此时p是指向的p的next,因此不需要等于
    3.如果到末尾了,p还为null,就是没有查找到


    插入元素
    1.插入元素和查找类似,找到位置后
    2.生成新的结点s, s->next=p->next p->next=s;

    删除元素
    1.删除元素,找到位置后
    2.绕过一下,q=p->next p->next=q->next;

    <?php
    class Node{
            public $data;
            public $next;
    }
    //创建一个链表
    $linkList=new Node();
    $linkList->next=null;
    $temp=$linkList;
    for($i=1;$i<=10;$i++){
            $node=new Node();
            $node->data="aaa{$i}";
            $node->next=null;
            $temp->next=$node;
            $temp=$node;
    }
    
    
    //获取元素
    function getEle($linkList,$i,&$e){
            $p=$linkList->next;
            //寻找结点标准语句
            $j=1;
            while($p && $j<$i){
                    $p=$p->next;
                    ++$j;
            }   
            if(!$p || $j>$i){
                    return false;
            }   
            $e=$p->data;
            return true;
    }
    
    //插入元素
    function listInsert(&$linkList,$i,$e){
            $p=$linkList;
            $j=1;
            while($p && $j<$i){
                    $p=$p->next;
                    ++$j;
            }   
            if(!$p || $j>$i){
                    return false;
            }   
            $s=new Node();
            $s->data=$e;
            //插入元素标准语句
            $s->next=$p->next;
            $p->next=$s;
            return true;
    }
    //删除元素
    function listDelete(&$linkList,$i,&$e){
            $p=$linkList;
            $j=1;
            //注意这里的判断$p->next为真,主要是后面要把$p->next指向$p->next->next
            while($p->next && $j<$i){
                    $p=$p->next;
                    ++$j;
            }
            if(!$p->next || $j>$i){
                    return false;
            }
            $q=$p->next;//这个才是当前元素
            $e=$q->data;
            $p->next=$q->next;
            return true;
    }
    $e="";
    //获取元素
    getEle($linkList,5,$e);
    var_dump($e);
    //插入元素
    listInsert($linkList,5,"taoshihan");
    //删除元素
    listDelete($linkList,1,$e);
    var_dump($e);
    var_dump($linkList);
    

      

  • 相关阅读:
    Java实现三人年龄
    从session中获取当前用户的工具类
    全局Session-GlobalSession
    Request获取Session的两种方式
    跨域访问sessionid不一致问题
    获得HttpServletRequest 和HttpSession对象
    eclipse pom.xml 报错org.apache.maven.plugin.war.WarMojo的解决办法
    idea与eclipse项目相互导入的过程
    静态工具类中使用注解注入service实例
    解决静态utils里面注入mapper对象
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9542316.html
Copyright © 2011-2022 走看看