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);
    

      

  • 相关阅读:
    BZOJ 2752: [HAOI2012]高速公路(road)
    codevs 1979 第K个数
    洛谷 P2680 运输计划
    hdu 3501 Calculation 2
    POJ 2417 Discrete Logging
    比较数组和字典
    js事件之event.preventDefault()与event.stopPropagation()用法区别
    alert
    js基本类型的包装对象
    js取自定义data属性
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9542316.html
Copyright © 2011-2022 走看看