剑指offer java版 test3—从尾到头打印链表

标题:剑指offer java版 test3—从尾到头打印链表

题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以用栈,递归,指针反转做,收益匪浅。链接:https://blog.csdn.net/weixin_39795049/article/details/85832150
写的很好。

基础知识介绍:
1,链表:链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。

链表由一系列的结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,每个结点包括两个部分:一是存储数据元素的数据域,另一个时存储下一节点地址的指针域。链表不必须按照顺序存储,使用链表可以客服数组需要预先知道数据大小的特点,链表结构可以充分利用计算机内存空间。

2,Collection表示一组对象,它是集中,收集的意思,Collection接口的两个子接口是List和Set接口。List是有序(List中每个元素都有索引标记,可以根据元素的索引标记访问元素),可重复的容器。List接口常用的实现类有3个:ArrayList,LinkedList和Vector。

2.1 ArrayList底层是用数组实现的存储,所以它查询效率高,增删效率低,线程不安全。但和数组不一样的是,ArrayList是可以存放任意数量的对象,长度不受限制。

2.2 LinkedList的底层则是采用双向链表实现的存储,它的每个数据节点都有两个指针,分别指向前后一个节点和后一个节点。所以LinkedList查询效率低,增删效率高,线程不安全。

2.3 Vector底层使用数组实现的List,线程安全,效率低。

代码编写:(使用ArrayList方式从头到尾输出的代码如下)
part1:链表类如下:

package cn.itcast.test3;

public class ListNode {


        int val;
        ListNode next = null;

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

    public int getVal() {
        return val;
    }

    public void setVal(int val) {
        this.val = val;
    }

    public ListNode getNext() {
        return next;
    }

    public void setNext(ListNode next) {
        this.next = next;
    }
}

part2:主函数代码如下:

package cn.itcast.test3;
/*
   方法一:使用ArrayList实现 从尾到头输出一个链表
 */
import java.util.ArrayList;

class practice {

    public static void main(String[] args){

        ListNode head=new ListNode(1);
        ListNode n1=new ListNode(2);
        ListNode n2=new ListNode(3);

        head.setNext(n1);
        n1.setNext(n2);

        Solution solution=new Solution();
        solution.printListFromTailToHead(head);

    }
}

 class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList al=new ArrayList();
        ArrayList al1=new ArrayList();

        while(listNode!=null){
            al.add(listNode.val);
            listNode=listNode.next;
        }

        for(int i=al.size()-1;i>=0;i--){

            al1.add(al.get(i));
            System.out.println(al1.get(i));
        }

        return al1;



    }
}
发布了10 篇原创文章 · 获赞 0 · 访问量 74

猜你喜欢

转载自blog.csdn.net/weixin_42146993/article/details/104594532