Java实现单链表的合并
首先定义一个节点类:
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
public int getVal(){return val;}
public void setVal(int val){this.val = val;}
public ListNode getNext(){return next;}
public void setNext(ListNode next){this.next = next;}
}
然后初始化两个链表:{1,2,4},{1,3,4}
public class justForTest7 {
public static void main(String[] args) {
ListNode head = new ListNode(1);
ListNode head1 = new ListNode(2);
ListNode head2 = new ListNode(4);
head.setNext(head1);
head1.setNext(head2);
ListNode preNode = new ListNode(1);
ListNode preNode1 = new ListNode(3);
ListNode preNode2 = new ListNode(4);
preNode.setNext(preNode1);
preNode1.setNext(preNode2);
//关键代码
ListNode first = head; //first指向第一个链表的头结点
ListNode after = preNode; //after指向第二个链表的头结点
while (first != null && after != null) {
ListNode firstTemp = first.next;
ListNode afterTemp = after.next;
first.next = after; //将after的第一个数放在first后面
first = firstTemp; //first后移到firstTemp
after.next = first; //after指向新的first
after = afterTemp; //after后移到afterTemp
}
ListNode testNode = head;
while (testNode != null)
{
System.out.print(testNode.val);
testNode = testNode.next;
}
}
}
运行结果: