链表部分的难点主要在于提前初始化一个空对象,用来指向新创建的节点的地址,并且将这个已经创建好的节点当作上一个节点,有一些抽象,不过蛮容易想明白的,下面上代码:
python:
class Node(object): def __init__(self, val): self.val = val self.next = None def create_list(): n = int(input('请输入链表中节点个数:')) global head head = None #初始化头节点为空 for i in range(n): #循环将读入的数值赋给每个节点,并且为每个节点建立前后关系 num = int(input('请输入节点中的数值:')) cur = Node(num) #建立一个节点,把读入的值赋值给这个节点 cur.next = None if head is None: head = cur #如果当前链表中头节点为空,那么就把当前节点当作头节点 else: q.next = cur #如果头节点已经存在,那么只需要将当前节点放在上一个节点的后面,q是上一个节点 q = cur #每当一个节点创建完成之后,在创建下一个节点之前,将当前节点在下一轮循环中标记为上一个节点 num = int(input('请输入要插入节点的值:')) cur = head while cur.next is not None: #从头到尾遍历链表,寻找比插入值大的数 if cur.next.val > num: #找到比插入值大的数之后,插入这一点 p = Node(num) p.next = cur.next cur.next = p break else:#当前节点的下一个节点值也小于插入值 cur = cur.next #继续检查下一个节点 t = head while t is not None: print(t.val) t = t.next if __name__ == '__main__': create_list()