思路:
1、分析从合并两个链表的头结点开始。比较两个链表头结点的值,较小头结点链表将是合并后链表的头结点。
2、继续合并两个链表中剩余的结点。在两个链表中剩下的结点依然是排序的,因此合并这两个链表的步骤和前面的步骤是一样的。我们还是比较两个头结点的值。
3、当我们得到两个链表中值较小的头结点并把它链接到已经合并的链表之后,两个链表剩余的结点依然是排序的,因此合并的步骤和之前的步骤是一样的。
4、一旦输入空的链表就会引入空的指针,因此我们要对空链表单独处理。当第一个链表是空链表,也就是它的头结点是一个空指针时,那么把它和第二个链表合并,闲人合并的过程就是第二个链表。同样,当输入的第二个链表的头结点是空指针的时候,我们把它和第一个链表合并得到的结果就是第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。
代码实现:
public class Link<T extends Comparable<T>> {
private Entry<T> headEntry;
private Entry<T> tailEntry;//标记尾部
public Entry<T> getEntry(T value){
for(Entry<T> p = headEntry;p!=null;p=p.getNext()){
if(p.getValue().compareTo(value) ==0){
return p;
}
}
return null;
}
public void addHead(T value){
Entry<T