合并两个有序链表

三个指针一个保存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;
       }

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值