Java-两个有序单链表合并为新的链表
package A_1;
public class A_1_1 {
public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
Node node5 = new Node(5);
Node node6 = new Node(6);
singlelinked linked1 = new singlelinked();
singlelinked linked2 = new singlelinked();
singlelinked linked3 = new singlelinked();
linked1.addsinglelinked(node1);
linked1.addsinglelinked(node3);
linked1.addsinglelinked(node5);
System.out.println("第一个链表");
linked1.list();
linked2.addsinglelinked(node2);
linked2.addsinglelinked(node4);
linked2.addsinglelinked(node6);
System.out.println("第二个链表");
linked2.list();
addtosinglelinked(linked1.getHead(),linked2.getHead(),linked3.getHead());
System.out.println("合并后第三个链表");
linked3.list();
}
public static Node addtosinglelinked(Node head1,Node head2,Node head3) {
Node temp1 = head1.next;
Node temp2 = head2.next;
Node temp3 = head3;
if(head1.next == null) {
head3.next = head2.next;
}else if(head2.next == null) {
head3.next = head1.next;
}else if(head1.next == null&&head2.next == null) {
System.out.println("两个子链表为空,所以相加为空");
return null;
}
while(temp1 != null && temp2 != null) {
if(temp1.valu < temp2.valu) {
temp3.next = temp1;
temp1 = temp1.next;
}else {
temp3.next = temp2;
temp2 = temp2.next;
}
temp3 = temp3.next;
}
if(temp1==null) {
temp3.next = temp2;
}else if(temp2==null) {
temp3.next = temp1;
}
return head3;
}
}
class singlelinked{
private Node head = new Node(0);
public Node getHead() {
return head;
}
public void addsinglelinked(Node node) {
Node temp = head;
while(true) {
if(temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = node;
}
public void list() {
if(head.next==null) {
System.out.println("链表为空~~~~");
return;
}
Node temp = head;
while(true) {
if(temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
}
class Node{
public int valu;
public Node next;
public Node(int newvalu) {
this.valu = newvalu;
}
@Override
public String toString() {
return "Node [valu=" + valu + "]";
}
}