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

不言
Libérer: 2023-04-04 07:04:01
original
2161 Les gens l'ont consulté

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
Copier après la connexion
$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);
Copier après la connexion

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal