• 奇偶链表


    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,

    而不是节点的值的奇偶性。

    示例 1:
      输入: 1->2->3->4->5->NULL
      输出: 1->3->5->2->4->NULL
    示例 2:
      输入: 2->1->3->5->6->4->7->NULL
      输出: 2->3->6->7->1->5->4->NULL

    思路:定义三个指针cur,f , s,分别指向头结点,第二个结点,第三个结点,将s结点插入到cur和f结点中间,然后cur指向cur.next,f指向f.next,此时判断f是否为空,为空直接返回,不为空,让s指向f的下一个结点,继续进行循环

    代码如下:

    public ListNode oddEvenList(ListNode head) {
            if(head == null || head.next == null) return head;
            //cur,f,s分别指向第一个,第二个,第三个结点
            ListNode cur = head;
            ListNode f = cur.next;
            ListNode s = f.next;
            while(s!=null){
                f.next = s.next;
                s.next = cur.next;
                cur.next = s;
                cur = cur.next;
                f = f.next;
                //这块一定要判断
                if(f == null) break;
                s = f.next;
            }
            return head;
        }
  • 相关阅读:
    1066 Bash 游戏
    1070 Bash 游戏 V4
    codevs 2928 你缺什么
    分块、线段树练习
    Father Christmas flymouse
    codevs 2494 Vani和Cl2捉迷藏
    codevs 2144 砝码称重2
    国王游戏
    codevs 1664 清凉冷水
    2015ACM/ICPC亚洲区沈阳站 Pagodas
  • 原文地址:https://www.cnblogs.com/du001011/p/10646522.html
Copyright © 2020-2023  润新知