剑指Offer_编程题-003 - 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

如题 (总结)

  • 首节点也存放了值,所以ListNode t = listNode; 直接从头开始遍历即可.
  • 简单题目,但是构建的时候出了点问题,毕竟需要自己简单测测.
  • 掌握链表的构建方法, 还要根据题目给的一段ListNode 代码来合理修改
  • .
  • 注意, 面向题解答案编程后发现, 最后的链表末尾是不设置结点的!坑!
  • https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tPage=1

借鉴学习文章列表

  • 链接1:
  • 链接2:
  • ALiBaBaJavaCodingGuideLines

1.ListNode


public class ListNode {
      int val;
      ListNode next = null;

    public ListNode() {
    }

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

    public ListNode getNext() {
        return next;
    }

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



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

2. Solution代码

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public ArrayList printListFromTailToHead(ListNode listNode) {

        if(listNode==null){
            return  new ArrayList<>();
        }
        Stack stack = new Stack<>();

        ListNode t = listNode;
        while (t!=null){
          stack.push(t.val);
          t = t.next;
        }
        ArrayList arrayList = new ArrayList<>(stack.size());

        while(!stack.empty()){
            arrayList.add(stack.pop());
        }
        return arrayList;

    }
}

3.Test测试


public class Test {
    public static void main(String[] args) {

        ListNode listNode = new ListNode();

        int arr[] = {67,0,24,58};
        ListNode next =listNode;
        for(int i : arr){
            next.setVal(i);
            //注意, 面向题解答案编程后发现, 最后的链表末尾是不设置结点的!坑!
            if(i!=58){
                next.setNext(new ListNode());
                next = next.getNext();
            }

        }
        Solution solution = new Solution();
        ArrayList arrayList = solution.printListFromTailToHead(listNode);
        for(Integer i: arrayList){
            System.out.println(i+"\t");
        }
    }
}

测试结果

58  
24  
0   
67  

你可能感兴趣的:(剑指Offer_编程题-003 - 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList)