奇偶链表

我的答案
image.png

官方


image.png

1.定义链表节点
2.定义:题目给的链表
3.制作一个函数:能展示链表的结果:能遍历链表展示结果
4.真正运行的函数中:
制作两个链表 一个是奇数链表,一个是偶数链表,最后将奇数链表拼接在偶数链表之前
错误记录:
1.在oddEvenList循环里i每轮循环需要叠加1
2.比如输入是12345,需要先做两个链表,奇链表:[1,3,5] 偶链表:[2,4]
然后将5的next指向2,但是这里有个坑就是4还是在原来的情况下指向5的!需要将4指向None,因为偶链表肯定是拼接在最后的
3.边界情况没有处理,比如输入是[1,2]或[1]只有两位或是只有一位就不需要置换了

class ListNode(object):
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


def oddEvenList(head: ListNode) -> ListNode:
    if not head or not head.next:
        return head
    return_head = head
    first_second = head.next
    first, second = head, head.next
    head = second.next
    i = 1
    while head:
        if i % 2 == 1:
            first.next = head
            first = head
        else:
            second.next = head
            second = head
        head = head.next
        i += 1 #忘记叠加了/尾巴没有处理/边界情况没有处理
    second.next = None
    first.next = first_second
    return return_head




def get_ListNode():
    p = ListNode(val=5, next=None)
    for i in [4, 3, 2, 1]:
        p = ListNode(val=i, next=p)
    return p


def traverse(head):
    print(head.val)
    while head.next:
        head = head.next
        print(head.val)


res_head = oddEvenList(get_ListNode())
traverse(res_head)

你可能感兴趣的:(奇偶链表)