输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
题目分析:
反向输出链表的值
算法分析
链表的特点:从头开始遍历一直到尾
要求:先遍历的后出去(栈:先入后出)-----用栈来实现
实现过程
入栈:遍历链表,将各结点的值并将元素push栈(java用LinkedList的addlist方法)
出栈:将各结点pop出栈,存储与数组并返回(java新建一个数组,通过popLast方法,将个元素存入数组,实现倒序)
代码实现
Definition for singly-linked list.
//定义结点
public class ListNode {
//结点的值
int val;
//下一个结点
ListNode next;
//构造器
ListNode(int x) { val = x; }
}
class Solution {
//返回一个数组
public int[] reversePrint(ListNode head) {
//定义一个集合
LinkedList<Integer> stack=new LinkedList<>();
//入栈操作
while(head!=null){
stack.addLast(head.val);
head=head.next;
}
//出栈操作
//定义一个数组
int[] arr=new int[stack.size()];
for(int i= 0;i<arr.length;i++)
arr[i]=stack.removeLast();
return arr;
}
}