合并两个有序链表

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Raynarong/article/details/51012673

三个指针一个保存la链表 ,一个保存lb链表,一个指向新的链表。

  1. 链表的插入,两个指针,一个是head,一个指向head后面的链,新插入的元素位于head后面。
  2. 运行该代码,自己外加上class类。

static class Node{
        int a;
        Node next;
    }
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        Node la,lb,lc;
        System.out.println("请输入第一个链表的长度");
         la=Create_link(in.nextInt());
        System.out.println("请输入第二个链表的长度");
         lb=Create_link(in.nextInt());
         lc=la;
         merge_list(la,lb,lc);
         print_list(lc);

    }

    static Node Create_link(int n){
        Node head,p;
        head=new Node();
        head.next=null;
        Scanner in=new Scanner(System.in);
        System.out.println("请顺序输入链表的值");
        for(int i=0;i<n;i++){
            p=new Node();

            p.a=in.nextInt();
            p.next=head.next;
            head.next=p;
        }
        return head;
    }
    static void merge_list(Node la,Node lb,Node lc){
        Node pa,pb,pc;
        pa=la.next;
        pb=lb.next;
        pc=lc;
        while(pa!=null&&pb!=null){
            if(pa.a>=pb.a){
                pc.next=pa;
                pc=pa;
                pa=pa.next;
            }
            else{
               pc.next=pb;
               pc=pb;
               pb=pb.next;
            }
        }
        pc.next=(pa==null)?pb:pa;

    }
   static void print_list(Node head){
       Node p;
       p=head.next;
       while(p!=null){
           System.out.println("["+p.a+"]"); 
           p=p.next;
       }

   }

展开阅读全文

没有更多推荐了,返回首页