Leetcode 328. 奇偶链表 Python3实现(超详细注释!)

Leetcode 328. 奇偶链表 Python3实现

给定一个单链表,实现将所有的奇数节点和偶数节点分别排在一起,加了详细的注释,方便日后复习,也希望能帮到其他小伙伴,如有错误,欢迎指正!

Python3代码如下:

class Solution:
    def oddEvenList(self, head):
        # 首先判空
        if not head:
            return head
        # 定义奇数链的指针
        odd_p = head
        # 定义偶数链的指针
        even_p = head.next
        # 之后头节点的next会指向下一个奇数节点,就找不到第一个偶数节点了,需要先记录下来
        dummy_even = head.next
        # 偶数节点或下一个奇数节点不为空时不断循环
        # 要求偶数节点不为空是因为可能当前偶数节点为None(注意偶数节点的最后一个节点是可以为None的,但是在偶数链有节点时奇数节点不能为None,否则最终的结果会多一个None),None是没有next的(循环内部会报错),同时这种情况说明后面没有节点了,所以也不需要遍历了;
        # 要求下一个奇数节点不为空是因为可能当前偶数节点不为空,但是下一个节点为None了,这种情况也不需要遍历了;
        while even_p is not None and even_p.next is not None:
            # 将当前奇数节点的next指向下一个奇数节点
            odd_p.next = even_p.next
            # 把奇数链的指针移动到下一个奇数节点处
            odd_p = odd_p.next
            # 将当前偶数节点的next指向下一个偶数节点(下一个奇数节点的next)
            even_p.next = odd_p.next
            # 把偶数链的指针移动到下一个偶数节点处
            even_p = even_p.next
        # 将奇数链的最后一个节点连接至偶数链的头节点
        odd_p.next = dummy_even
        # 返回head即可
        return head
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值