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)