package linkedlist;
public class SingleLinkedListDemo {
public static void main(String[] args) {
PersonNode node1 = new PersonNode(1, "li");
PersonNode node2 = new PersonNode(2, "wang");
PersonNode node3 = new PersonNode(3, "zhao");
PersonNode node4 = new PersonNode(4, "zhao1");
PersonNode node5 = new PersonNode(5, "zhao2");
PersonNode node6 = new PersonNode(6, "zhao26");
PersonNode node7 = new PersonNode(7, "zhao2677");
PersonNode node8 = new PersonNode(8, "zhao2688");
SingleLinkedList list3 = new SingleLinkedList();
list3.addNodeByNo(node3);
list3.addNodeByNo(node1);
list3.addNodeByNo(node5);
list3.addNodeByNo(node8);
SingleLinkedList list4 = new SingleLinkedList();
list4.addNodeByNo(node4);
list4.addNodeByNo(node2);
list4.addNodeByNo(node6);
list4.addNodeByNo(node7);
list3.showNode();
System.out.println("============");
list4.showNode();
System.out.println("合并");
SingleLinkedList list5 = list3.merge(list3, list4);
list5.showNode();
}
}
class SingleLinkedList {
PersonNode head;
public SingleLinkedList(PersonNode head) {
this.head = head;
}
public SingleLinkedList() {
head = new PersonNode();
}
public void addNodeByNo(PersonNode node) {
PersonNode temp = head;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no > node.no) {
break;
} else if (temp.next.no == node.no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
System.out.println("编号以存在");
} else {
node.next = temp.next;
temp.next = node;
}
}
public void showNode() {
if (head.next == null) {
System.out.println("链表为空");
return;
}
PersonNode temp = head.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
public SingleLinkedList merge(SingleLinkedList list1, SingleLinkedList list2) {
if (list1.head.next == null) {
return list2;
} else if (list2.head.next == null) {
return list1;
}
PersonNode newNode = new PersonNode();
PersonNode n1 = newNode;
PersonNode l1 = list1.head.next;
PersonNode l2 = list2.head.next;
while (l1 != null && l2 != null) {
if (l1.no < l2.no) {
n1.next = l1;
l1 = l1.next;
n1 = n1.next;
} else {
n1.next = l2;
l2 = l2.next;
n1 = n1.next;
}
}
if (l1 == null) {
n1.next = l2;
}
if (l2 == null) {
n1.next = l1;
}
return new SingleLinkedList(newNode);
}
}
class PersonNode {
int no;
String name;
PersonNode next;
public PersonNode(int no, String name) {
this.no = no;
this.name = name;
}
public PersonNode() {
}
@Override
public String toString() {
return "PersonNode{" +
"no=" + no +
", name='" + name + '\'' +
'}';
}
}
