题目比较简单,要注意删除元素的方法
描述
给出一个链表,并将链表的值以倒序存储到数组中。
您不能改变原始链表的结构。
ListNode 有两个成员变量:ListNode.val 和 ListNode.next
样例
样例1
输入: 1 -> 2 -> 3 -> null
输出: [3,2,1]
样例2
输入: 4 -> 2 -> 1 -> null
输出: [1,2,4]
/**
* Definition of singly-linked-list:
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: the given linked list
* @return: the array that store the values in reverse order
*/
void findLast(ListNode* head, vector<int>&res)
{
if (head == nullptr)
return;
int val;
ListNode* tmp = head;
if (tmp->next == nullptr)//元素个数为1
{
val = tmp->val;
res.push_back(val);
head = nullptr;
}
else //元素个数大于1
{
while (tmp->next->next != nullptr)
tmp = tmp->next;
val = tmp->next->val;
res.push_back(val);
tmp->next = nullptr;
}
findLast(head, res);//递归求解
}
vector<int> reverseStore(ListNode * head) {
// write your code here
vector<int>res;
findLast(head, res);
return res;
}
};