码迷,mamicode.com
首页 > 其他好文 > 详细

递增量表的创建、合并、打印

时间:2017-10-01 23:45:50      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:ext   对象   lap   lis   节点   color   ati   img   创建   

1、链表节点类

技术分享
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
View Code

2、链表合并类

技术分享
public class ListMerge {
    public ListNode merge(ListNode list1, ListNode list2) {
        ListNode head = null;

        if (list1 == null) {
            return list2;
        }
        if (list2 == null) {
            return list1;
        }

       //递归调用
        if (list1.val < list2.val) {
            head = list1;
            head.next = merge(list1.next, list2);
        } else {
            head = list2;
            head.next = merge(list1, list2.next);
        }

        return head;

    }
}
View Code

3、链表打印类

技术分享
import java.util.ArrayList;
import java.util.Stack;

public class PrintList {
    //方式一:通过将链表所有节点存入ArrayList中,然后遍历ArrayList中输出的元素
    public void printList(ListNode head) {
        //遍历链表所有节点,存入ArrayList中
        ArrayList<ListNode> arrayList2 = new ArrayList<ListNode>();
        while (head != null) {
            arrayList2.add(head);
            head = head.next;
        }
        //输出值
        for (int i = 0; i < arrayList2.size(); i++) {
            System.out.print(arrayList2.get(i).val + " ");
        }
    }

    //方式二:通过将链表所有节点压入栈中,然后弹出所有节点的值,实现链表逆序打印
    public void printList2(ListNode head) {
        Stack<ListNode> stack = new Stack<ListNode>();
        //链表所有节点进栈
        while (head != null) {
            stack.push(head);
            head = head.next;
        }
        //打印栈中所有节点的值
        while (!stack.empty()) {
            System.out.print(stack.pop().val+" ");

        }
    }
}
View Code

4、测试类(含链表创建)

技术分享
public class TestMain {
    public static void main(String[] args) {
        //创建打印链表类的对象
        PrintList p=new PrintList();

        //新建链表1
        ListNode head1=new ListNode(1);
        ListNode node11=new ListNode(3);
        ListNode node12=new ListNode(5);
        ListNode node13=new ListNode(7);
        head1.next=node11;
        node11.next=node12;
        node12.next=node13;
        node13.next=null;
        //打印链表1
        p.printList(head1);
        System.out.println();

        //新建链表2
        ListNode head2=new ListNode(2);
        ListNode node21=new ListNode(4);
        ListNode node22=new ListNode(6);
        ListNode node23=new ListNode(8);
        head2.next=node21;
        node21.next=node22;
        node22.next=node23;
        node23.next=null;
        //打印链表2
        p.printList(head2);
        System.out.println();

        //链表合并
        ListMerge listMerge=new ListMerge();
        ListNode head=listMerge.merge(head1,head2);

        //打印合并后的链表
        p.printList(head);
    }
}
View Code

 

递增量表的创建、合并、打印

标签:ext   对象   lap   lis   节点   color   ati   img   创建   

原文地址:http://www.cnblogs.com/hezhiyao/p/7618074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!