链表oj---->链表分割

Posted ohana!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表oj---->链表分割相关的知识,希望对你有一定的参考价值。

题目内容:

 解题代码:

public class Partition {
    public ListNode partition(ListNode pHead, int x) {
        if(pHead == null){
            return null;
        }
        ListNode list1 = new ListNode(0);
        ListNode cur1 = list1;
        
        ListNode list2 = new ListNode(0);
        ListNode cur2 = list2;
        
        ListNode prev = pHead;
        
        while(prev != null){
            if(prev.val < x){
                cur1.next = prev;
                cur1 = prev;
            }else{
                cur2.next = prev;
                cur2 = prev;
            }
            prev = prev.next;
        }
        
        cur1.next = list2.next;
        cur2.next = null;
        
        return list1.next;
    }
}

解题思路:

  • 先判断头结点是否为空,若为空,直接返回空
  • 创建两个新链表,从原链表第一个结点开始,若结点value小于x,则让一个链表指向此结点,继续遍历,若结点value >= x 让另一个链表指向此结点,最终就将原链表分割为两个
  • 最后根据题目要求,将要放到后面的链表最终置空;让前面链表的下一个结点指向第二个链表的头结点

以上是关于链表oj---->链表分割的主要内容,如果未能解决你的问题,请参考以下文章

数据结构---线性表(链表OJ)

链表OJ题练习1

数据结构学习笔记(数组链表OJ题)整理与总结

数据结构学习笔记(数组链表OJ题)整理与总结

java 数据结构常考的OJ 链表,重点!重点!!!

数据结构之超硬核热门复杂度数组链表OJ题2W+文字+图片详解