剑指offer--给定一个链表,从尾部到头部打印,输出链表节点的值

新开公众号,欢迎关注:里面有几个T的免费的学习资源

这里写图片描述
/*给定一个链表,从尾部到头部打印,
* 输出链表节点的值*/

package offer1.PrintLinkListFromTailToFront;

/*给定一个链表,从尾部到头部打印,
 * 输出链表节点的值*/



public class Own {

    public static class ListNode{
        int val;
        ListNode next=null;
        public ListNode(int val) {
            this.val=val;
        }

    }

    public Integer[] printListFromTailToHead(ListNode listNode){
        int len=0;
        ListNode temp=listNode;
        //1.第一轮遍历链表,统计节点个数
        while (listNode!=null) {
            ++len;
            listNode=listNode.next;
        }


        //2.第二轮遍历数组,把遍历的节点的值从数组后面开始往前面填充
        Integer[] nodes=new Integer[len];
        int i=len-1;
        while (temp!=null) {
            nodes[i--]=temp.val;
            temp=temp.next;
        }
        return nodes;
    }

    //测试
    public static void main(String[] args) {
        ListNode root=new ListNode(1);
        ListNode node1=new ListNode(2);
        ListNode node2=new ListNode(3);
        ListNode node3=new ListNode(4);

        root.next=node1;
        node1.next=node2;
        node2.next=node3;

        Own a=new Own();
        Integer[]s=a.printListFromTailToHead(root);
        for (int i = 0; i < s.length; i++) {
            System.out.print(s[i]+" ");
        }
    }


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章