zoukankan      html  css  js  c++  java
  • [PHP] 算法-合并两个有序链表为一个有序链表的PHP实现

    合并两个有序的链表为一个有序的链表:
    类似归并排序中合并两个数组的部分
    1.遍历链表1和链表2,比较链表1和2中的元素大小
    2.如果链表1结点大于链表2的结点,该结点放入第三方链表
    3.链表1往下走一步,反之亦如此
    4.当两个链表中有一个结束了以后,另一个链表就可以全部放进第三方链表了
    
    list3
    while list1!=null list2!=null
        if list1->data >= list2->data
            list3->next=list1
            list3=list1 //当前指针后移
            list1=list1->next  //链表1走一步
        else
            list3->next=list2
            list3=list2
            list2=list2->next
    
    if list1!=null
        list3->next=list1
    if list2!=null
        list3->next=list2
    $linkList=new Node();
    $linkList->next=null;
    $temp=$linkList;
    for($i=1;$i<=10;$i+=2){
            $node=new Node();
            $node->data=$i;
            $node->next=null;
            $temp->next=$node;
            $temp=$node;
    }
    //第二个有序的链表
    $list2=new Node();
    $temp=$list2;
    for($i=2;$i<=10;$i+=2){
            $node=new Node();
            $node->data=$i;
            $node->next=null;
            $temp->next=$node;
            $temp=$node;
    }
    
    //合并两个链表
    $newlist=new Node();
    $list1=$linkList->next;//跳过头结点
    $list2=$list2->next;
    
    $list3=$newlist;//一定要赋予给这个临时结点,否则新结点前移的时候就会被覆盖
    while($list1!=null && $list2!=null){
            if($list1->data<=$list2->data){
                    $list3->next=$list1;//新链表指向链表1结点
                    $list3=$list1;//新链表当前结点往前移动
                    $list1=$list1->next;//链表1往前移动
            }else{
                    $list3->next=$list2;
                    $list3=$list2;
                    $list2=$list2->next;
            }   
    }
    if($list1!=null){
            $list3->next=$list1;
    }
    if($list2!=null){
            $list3->next=$list2;
    }
    
    var_dump($newlist);
  • 相关阅读:
    阿诺尔德给5至15岁孩子出的数学题
    上手机器学习,从搞懂这十大经典算法开始
    海报模板
    测度论--长度是怎样炼成的[zz]
    柯西不是你
    搭建Web部署环境
    搭建jdk环境
    Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
    Web开发技术选型之Java与PHP
    从java到web前端再到php,一路走来的小总结
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9615680.html
Copyright © 2011-2022 走看看