标题:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。(C语言实现)
这道题的思路是很简单的,将值小的结点拿下来尾插就可以了。
以下是代码的实现:
但是,上面的代码有一些不好的地方,比如每次进入循环,都需要判断一次 tail 是否为 NULL, 实际是,只有第一次 tail才会为 NULL, 所以思路一是将值小的那个结点做头结点,这样只需判断一次就可以了。下面给出代码:
以上是一种优化思路,现在给出思路二,我们 malloc 出来一个结点称作哨兵位的头结点,这个几点不存储有效数据,这样也就无需做 tail为空的判断。
以上就是我对这一题的分析,希望对你有所帮助。