剑指offer 6 从尾到头打印链表

1: 新建stack,将链表元素逐一push进栈,再将栈内元素pop到新建的Arraylist,即可得到反序链表
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
import java.util.Stack;//Attention!!!
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> temp=new Stack<Integer>();
        //ListNode p=new ListNode();
        //p=listNode;
        
        while(listNode!=null){
            temp.push(listNode.val);
            listNode=listNode.next;
        }
        ArrayList<Integer> ans=new ArrayList<Integer>();
        while(!temp.isEmpty()){
            ans.add(temp.pop());
        }
        return ans;
    }
}

2:递归法
import java.util.ArrayList;
public class Solution {
    
    ArrayList<Integer> newArrayList=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            printListFromTailToHead(listNode.next);
            newArrayList.add(listNode.val);
        }
        return newArrayList;
    }
    
}
3:向头插元素
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ListNode temp=listNode;
        ArrayList<Integer> ans=new ArrayList<>();
        while(temp!=null){
            ans.add(0,temp.val);//每次向新建的ArrayList头部插入一个元素
            temp=temp.next;//指针后移
        }
        return ans;
    }



全部评论

相关推荐

2025-12-26 10:52
河北传媒学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务