//测试类
package SignalLinkList6; import java.util.Scanner; public class SignalLinkListDemo { public static void main(String[] args) { SignalLinkList s1 = new SignalLinkList(); SignalLinkList s2 = new SignalLinkList(); AddNode(s1,1); AddNode(s2,2); SignalLinkList s = CombineLinkList(s1,s2); System.out.println("排序结果:"); s.show(); } public static void AddNode(SignalLinkList s, int num){ Scanner sc = new Scanner(System.in); System.out.println("请输入第"+num+"个链表的结点个数:"); int number = sc.nextInt(); System.out.println("请输入第"+num+"个链表的结点:"); for (int i = 0; i < number; i++) { int n = sc.nextInt(); s.addNode(n); } } public static SignalLinkList CombineLinkList(SignalLinkList s1,SignalLinkList s2){ LinkNode temp1 = s1.Head.next; LinkNode temp2 = s2.Head.next; LinkNode l = null; SignalLinkList s = new SignalLinkList(); if(temp1.number < temp2.number){ l = temp1; } if(temp2.number < temp1.number){ l = temp2; } s.addNode (l); while(temp1 !=null && temp2 !=null){ if(temp1.number < temp2.number){ while(temp1.number < temp2.number){ l = temp1; temp1 = temp1.next; if(temp1 == null){ break; } } l.next = temp2; l = temp1; if(temp1 == null){ break; } } if(temp2.number < temp1.number){ while(temp2.number < temp1.number){ l = temp2; temp2 = temp2.next; if(temp2 == null){ break; } } l.next = temp1; l = temp2; if(temp2 == null){ break; } } } return s; } }
//链表结点类
class LinkNode { public int number; public LinkNode next; public LinkNode(int number){ this.number = number; } @Override public String toString() { return number +" "; } }
//链表类
class SignalLinkList { LinkNode Head = new LinkNode(0); public void addNode (LinkNode l){ LinkNode temp = Head; while(temp.next != null && l.number > temp.next.number){ temp = temp.next; } if(temp.next == null){ temp.next = l; } else if(temp.next.number > l.number){ l.next = temp.next; temp.next = l; } } public void addNode(int number){ LinkNode temp = Head; LinkNode l = new LinkNode(number); while(temp.next != null && number > temp.next.number){ temp = temp.next; } if(temp.next == null){ temp.next = l; } else if(temp.next.number > number){ l.next = temp.next; temp.next = l; } } public void show(){ if(Head.next ==null){ System.out.println("链表为空"); } LinkNode temp = Head.next; while(temp != null){ System.out.print(temp.toString()); temp = temp.next; } } } 输出结果: