Maison  >  Article  >  développement back-end  >  Comment fusionner deux listes chaînées ordonnées en une seule liste chaînée ordonnée en PHP (code)

Comment fusionner deux listes chaînées ordonnées en une seule liste chaînée ordonnée en PHP (code)

不言
不言original
2018-09-12 16:45:592102parcourir

Le contenu de cet article explique comment fusionner deux listes chaînées ordonnées en une seule liste chaînée ordonnée (code) en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. . a aidé.

Fusionner deux listes chaînées ordonnées en une seule liste chaînée ordonnée :
Similaire à la partie de fusion de deux tableaux dans le tri par fusion
Parcourez la liste chaînée 1 et la liste chaînée 2, comparez les listes chaînées 1 et. 2 La taille des éléments dans
2. Si le nœud de la liste chaînée 1 est plus grand que le nœud de la liste chaînée 2, le nœud est mis dans la liste chaînée tierce
3. liste chaînée 1, et vice versa
4. Quand Après la fin de l'une des deux listes chaînées, l'autre liste chaînée peut être placée dans la liste chaînée tierce

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;$ib580f73c1fdf858295adebea0075fd9edata=$i;
        $node->next=null;
        $temp->next=$node;
        $temp=$node;
}
//第二个有序的链表
$list2=new Node();
$temp=$list2;
for($i=2;$ib580f73c1fdf858295adebea0075fd9edata=$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->data49a1a520f602fecfb8aab14707e6054fdata){
                $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);

Recommandations associées. :

PHP réalise la fusion des deux partage de code de listes chaînées triées

Explication détaillée de la fusion de deux listes chaînées triées en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn