要求将算法7~13设计为3. 4. 1节定义的带头结点

要求将算法7~13设计为3. 4. 1节定义的带头结点单链表LinkedList类的方法。

13·设计算法,在有序单链表中插入值为x的元素,并保持表的有序性。

答案
class LNode:
    def __init__(self, data=None):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = LNode()  # 头结点,不存数据

    def insert_order(self, x):
        """有序单链表插入x,保持递增有序"""
        # 新建结点
        new_node = LNode(x)
        pre = self.head
        # 找插入位置:pre后面结点的值小于x就继续后移
        while pre.next is not None and pre.next.data < x:
            pre = pre.next
        # 插入到pre之后
        new_node.next = pre.next
        pre.next = new_node

    def print_list(self):
        cur = self.head.next
        res = []
        while cur:
            res.append(cur.data)
            cur = cur.next
        print(res)

# 测试
lst = LinkedList()
# 原有序链表:2 →4 →6
lst.insert_order(2)
lst.insert_order(4)
lst.insert_order(6)
lst.print_list()    # [2, 4, 6]

lst.insert_order(5) #插入5
lst.print_list()    # [2, 4, 5, 6]

lst.insert_order(1) #插表头
lst.print_list()    # [1, 2, 4, 5, 6]

lst.insert_order(8) #插表尾
lst.print_list()    # [1, 2, 4, 5, 6, 8]

题目信息

题号:8237
题型:简答题
知识点:Python
难度:普通