剑指offer第三天之从尾到头打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
c++:
链表反转之后输出
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* r=NULL;
ListNode* node=pHead;
ListNode* p=NULL;
while(node!=NULL)
{
r=node->next;
node->next=p;
p=node;
node=r;
}
return p;
}
vector<int> printListFromTailToHead(ListNode* head) {
ListNode* node = ReverseList(head);
vector<int>v;
while(node)
{
v.push_back(node->val);
node=node->next;
}
return v;
}
};
java:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr= new ArrayList<>();
while(listNode!=null)
{
arr.add(0,listNode.val);
listNode =listNode.next;
}
return arr;
}
}
python:
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
lista =[]
while listNode:
lista.insert(0,listNode.val)
listNode=listNode.next
return lista