解决两个链表第一个公共子节点的问题
注意 如果直接定义两个数组 这样其实是没有用的 他们本质是两个完全不同的链表 并不能最后检测到一条上 所以正确的做法是通过先定义 然后每一个去连起来这样的方法
第一种方法 合并字符串法
这个方法核心是做差的思想。也就是说把字符串a和字符串B,分别构成ab和BA两种字符串,然后它们最终长度一定是一样的,然后就可以同时遍历到NULL,这样就可以保证我不会死循环。这就是为什么里面要有一个if循环的原因。
关于合并字符串 首先需要注意的是 字符串为空的情况 然后如果两者不相等就一直遍历 所以用while比较不错。
第二种方法 差和双指针法
这种方法主要的思路就是通过先把长的并立到和短的一样长,然后两者共同走相同的步数。这样的话当长的便利到诺的时候短的就刚好遍历到所需的地方。
这样成立的理由是,不问前面是长还是短,那么后面的长度都是一样的。然后我们先让长的变得和短的一样,就让前面的长度也变得一样了。这样就自动让错位变到后面。
合并有序列表
合并两个有序列表
prev=prev->next;的作用:将prev换成最新的节点 方便遍历
第二种方法 也就是说减少了if里面嵌套if的形式 通过三个while循环 将一个大的while拆开 让代码可读性更好
合并列表有一个疑问 为什么还有一个链表不为空的时候 newhead=newhead-》next?
合并k个链表 也就是先实现两个链表的合并 然后通过一个for循环 来实现合并k个链表(但这里其实没有怎么看懂)