题目:输入一个链表,从尾到头打印链表每个节点的值。
java思路:注意是从尾到头输出每个节点的值,这就意味着先进后出的特点,因而我们想到栈。首先我们声明一个栈,存储链表中元素的值,然后声明一个list,读取堆栈中的元素,最后返回list即可。
代码:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.Stack;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();
while(listNode!=null){
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> arraylist = new ArrayList<Integer>();
while(!stack.isEmpty()){
arraylist.add(stack.pop());
}
return arraylist;
}
}
python代码思路:对应于列表存储就行,只要链表不为空,就继续读,读到为空为止,最后返回列表。
若用list.insert(0,value)方法就直接是从尾到头读的元素
若用list.append()方法需要在返回list的时候逆序返回。
python代码:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
list = []
while listNode:
list.append(listNode.val)
listNode = listNode.next
return list[::-1]