当前位置: 首页> 健康> 养生 > 链表篇:03-合并有序链表

链表篇:03-合并有序链表

时间:2025/7/12 6:57:35来源:https://blog.csdn.net/caomnnnnnn/article/details/140833851 浏览次数:0次

解题思路:

使用双指针,一个指针指向头节点,然后另外一个指针进行移动。让其头节点保持不动,最后循环遍历两个链表,将其挂到头指针所在的节点上。

temp  守卫节点,用于指向头节点,防止头节点丢失

tempNew 指针,移位指针,往后移动,用于遍历头节点所在的链表

t1 链表1的头指针, 移位指针,用于遍历链表1

t2 链表2的头指针,移位指针,用于遍历链表2


代码实现:

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;*   public ListNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param pHead1 ListNode类* @param pHead2 ListNode类* @return ListNode类*/public ListNode Merge (ListNode pHead1, ListNode pHead2) {if(pHead1==null){return pHead2;}if(pHead2==null){return pHead1;}ListNode temp  = new ListNode(-65535); // 头指针保持不动 -65535 取其int类型的极值,表示其最小值ListNode tempNew =  temp;while(pHead1 != null && pHead2 != null){if(pHead1.val <= pHead2.val){// 将链表1的节点挂到头节点tempNew.next = pHead1; // 链表1往后移动一位pHead1 = pHead1.next; }else {// 将链表2的节点挂到头节点tempNew.next = pHead2;// 链表2往后移动一位pHead2 = pHead2.next;}// 让临时链表往后移动一位tempNew = tempNew.next;}// 如果其中一个链表为null,表示已经遍历完毕,将另一个链表挂在头指针所在的链表上if(pHead1!=null){tempNew.next = pHead1;}if(pHead2!=null){tempNew.next = pHead2;}// 最后由于头指针的下一个数据才是两个链表合并的数据,所以需要往后取一位return temp.next;}
}

关键字:链表篇:03-合并有序链表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: