Rumah > pembangunan bahagian belakang > tutorial php > PHP如何实现合并两个有序链表为一个有序链表(代码)

PHP如何实现合并两个有序链表为一个有序链表(代码)

不言
Lepaskan: 2023-04-04 07:04:01
asal
2173 orang telah melayarinya

本篇文章给大家带来的内容是关于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
Salin selepas log masuk
$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);
Salin selepas log masuk

相关推荐:

PHP实现合并两个排序链表代码分享

PHP实现合并两个排序链表详解

Atas ialah kandungan terperinci PHP如何实现合并两个有序链表为一个有序链表(代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan