Python数据结构与算法——第十一课 单向链表操作之三

  例题8:合并(相加)多个单向链表,得到新链表。

  分析:合并多个链表将多个链表头尾相连合并成一个链表。

  算法实现:声明一个临时指针,循环到第一个链表的尾节点,然后把尾节点的后续指针指向第二个链表的头节点,把第二个链表的头指针置空,长度加到第一个链表中,临时指针继续往下,同样的方法合并第剩下的链表(如果存在的话),完成后返回第一个链表。

  程序代码:

 

 

 

  运行结果:

 

 

  练习1:把例题8的测试改为合并4个单向链表。

 

  例题9:合并两个有序链表将。

  两个有序链表合并成一个,让新链表依然是有序的。算法分析如下:

  (1)比较头节点的大小,选小的链表为合并后在载体。

  (2)定义2个指针,分别指向载体和被合并链表的头节点。

  (3)载体指针前行1

  (4)2个指针所指向的值进行比较,如果载体的值不大与被合并链表,载体指针继续前行1;否则用被合并链表置换载体剩下的链表;载体剩下的链表就成了被合并链表;如此循环。

  (5)如果载体链已到尾节点,仍然小于被合并链,把被合并链接到载体链。把长度相加作为合并后的长度。

  程序代码:

 

 

 

  运行结果:

 

 

  练习2:构建三个有序单向链表,然后把它们合并为一个有序单向链表。

 

  学思营编程课堂基于蓝桥STEM86平台https://www.stem86.com,开展学编程三部曲:Scratch(三年级以前)>>>Python(四年级以后)>>>C++(七年级以后)教育实验活动,任何人可以免费参加,打开https://xuesiying.stem86.com网页注册进入课堂,也可关注本公众号留言。更多课程请打开学思营同步网站:http://www.5xstar.com/doc.html

 

参考资料:

1、《Python算法图解》何韬编著 清华大学出版社