面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

  • 题目
    •  输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
  • 思路
    • 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序。
  • 代码
    • import java.util.ArrayList;
      import java.util.Stack;
      /**
       *描述逆序打印链表
       * 输入:一个链表L1
       * 输出:按链表值逆序返回一个Arraylist
       *
       */          
      public class ReversePrintList {
          /**需要定义节点,值和指针**/
           static class ListNode{
              int val;
              ListNode next=null;
              ListNode(int val){
                  this.val=val;
              }
          }
          public static ArrayList<Integer> ReverseList(ListNode L1){
              Stack<Integer> sk1=new Stack<Integer>();
              ArrayList<Integer> res=new ArrayList<Integer>();
              if(L1==null){
                  return null;
              }
              while(L1!=null){//入栈                                     
                  sk1.push(L1.val);
                  L1=L1.next;
              }
              int len=sk1.size();
              for(int i=0;i<len;i++){//出栈
                  res.add(sk1.pop());
              }
              return res;
          }
          public static void main(String Args[]){
              ListNode l1=new ListNode(1);
              ListNode l2=new ListNode(2);
              ListNode l3=new ListNode(3);
              ListNode l4=new ListNode(4);
              l1.next=l2;
              l2.next=l3;
              l3.next=l4;
              ReverseList(l1);
              ArrayList<Integer> a1=new ArrayList<Integer>();
              a1=ReverseList(l1);
              System.out.print(a1);
          } 
      }
      

        

    •  输出
    • [4, 3, 2, 1]
      

        

原文地址:https://www.cnblogs.com/moonlightml/p/9827178.html