链表的荷兰国旗问题 分成小中大三部分 哑节点实现

生成随机长度的链表
将单向链表按某值划分成左边小、中间相等、右边大的形式。注意 给定的值是任意的。

创建小,等,大3组共6个哑节点。
把小于给定值的节点链接到L节点后
把等于给定值的节点链接到M节点后
把大于给定值的节点链接到R节点后
使用哑节点, 把这三部分链表链接起来,不需要讨论某部分为空的情形,比设定头尾指针为None代码更简洁

def partion(head, pivot):
    L = Lhead = Node(None, None)
    M = Mhead = Node(None, None)
    R = Rhead = Node(None, None)
    while head:
        post = head.next
        if head.val < pivot:
            L.next = head
            head.next = Mhead
            L = head
        elif head.val == pivot:
            M.next = head
            head.next = Rhead
            M = head
        else:
            R.next = head
            head.next = None
            R = head
        head = post
    L.next = Mhead.next
    M.next = Rhead.next
    return Lhead.next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值