要求将算法7~13设计为3. 4. 1节定义的带头结点
要求将算法7~13设计为3. 4. 1节定义的带头结点单链表LinkedList类的方法。
11.设计算法,将给定的单链表中所有值为偶数的结点放在值为奇数的结点前面。
答案
class LNode: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = LNode(None) # 头结点 def even_before_odd(self): """偶数结点全部放到奇数结点前面,保持相对次序""" even_head = LNode(None) odd_head = LNode(None) e = even_head # 偶数链表尾指针 o = odd_head # 奇数链表尾指针 p = self.head.next while p is not None: if p.data % 2 == 0: e.next = p e = e.next else: o.next = p o = o.next p = p.next # 截断尾部,防止成环 o.next = None # 偶数链表尾部接上奇数链表 e.next = odd_head.next # 挂回原链表头结点 self.head.next = even_head.next