题解 | #链表的奇偶重排#

链表的奇偶重排

https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    public ListNode oddEvenList (ListNode head) {
        ListNode odd = head;
        ListNode even = head;
        ListNode newHead = head;
        ListNode cur = newHead;
        if(head==null){return null;}
        if (head.next != null) {
            even = head.next;
        }
        else{return head;}
        while (odd.next != null && odd.next.next != null) {
            odd = odd.next.next;
            cur.next = new ListNode(odd.val);
            cur = cur.next;
        }
        while (even != null) {
            cur.next = new ListNode(even.val);
            if (even.next == null) {
                return newHead;
            }
            even = even.next.next;
            cur = cur.next;
        }

        return newHead;
    }
}

思路其实很简单,做一个odd和even指针,将读取的数值存储到新建了的链表中即可。需要注意的是head==null;以及head.next==null;的情况;当然在写代码过程中我还犯了一个错,那就是不能之间判断odd.next.next!=null;这样一旦遇到odd.next==null;就会出现空指针报错了,必须改成odd.next!=null&&odd.next.next!=null;这样就可以避免之前的情况了。

全部评论

相关推荐

04-14 12:52
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务