この記事の内容は、PHP が 2 つの順序付きリンク リストを 1 つの順序付きリンク リスト (コード) にマージする方法についてです。一定の参考値があります。困っている友人は参照できます。お役に立てば幸いです。助けられました。 。
2 つの順序付きリンク リストを 1 つの順序付きリンク リストにマージします:
マージ ソートで 2 つの配列をマージする部分と同様です
1。リンク リスト 1 とリンク リスト 2 を調べ、リンク リスト 1 とリンク リストを比較します。 2
2 の要素のサイズ。リンク リスト 1 のノードがリンク リスト 2 のノードより大きい場合、そのノードはサードパーティのリンク リスト
3 に入れられます。1 つ下に進みます。
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);
関連する推奨事項:
2 つのソートされたリンク リストをマージするコード共有の PHP 実装
PHP で 2 つのソートされたリンク リストをマージする詳細な説明
以上がPHP で 2 つの順序付きリンク リストを 1 つの順序付きリンク リストにマージする方法 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。