链表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---->链表分割的主要内容,如果未能解决你的问题,请参考以下文章