剑指offer3|剑指offer3 从头到尾打印链表

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
【剑指offer3|剑指offer3 从头到尾打印链表】

package z_jzoffer.jz3; /** * @author houChen * @date 2020/8/18 11:24 * @Description: */ public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }

package z_jzoffer.jz3; /** *输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 */ import java.util.ArrayList; import java.util.List; public class Solution3 {public ArrayList printListFromTailToHead(ListNode listNode) {//保存返回的结果 ArrayList list = new ArrayList<>(); //获取链表的长度 int len = 0; ListNode cur = listNode; while(cur!=null){ len++; cur=cur.next; }//从后向前取出链表中的元素放入list中 int count = 1; //计数器 cur = listNode; while(true){ if(len<1){ break; //链表中的元素取完了 } if(count==len){ // 如果找到了第len个元素,就找len-1个元素 list.add(cur.val); len--; count=1; cur=listNode; continue; } count++; cur = cur.next; } return list; } }

package z_jzoffer.jz3; import java.util.ArrayList; /** * @author houChen * @date 2020/8/18 11:40 * @Description: */ public class Solution3Test { public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(4); node1.next=node2; node2.next=node3; node3.next = node4; Solution3 s = new Solution3(); ArrayList list = s.printListFromTailToHead(node1); for(Integer ele : list){ System.out.println(ele); } } }


    推荐阅读