本文最后更新于:2020年6月28日 下午

题目描述:

输入一个链表,从尾到头打印链表每个节点的值。

实现如下:

//可以使用stack的先进后出,也可以使用递归,因为已给定函数所以使用递归
//本题的在线测试用例是无头链表→_→
/*节点结构体
struct ListNode 
{
	int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};
*/
class Solution
{
public:
	vector<int> printListFromTailToHead(ListNode* head)
	{
		vector<int> v;
		//判断是否为空,不为空调用递归函数
		if (head != NULL) ListFromTailToHead(head, v);
		return v;
	}
	
	//递归函数传参为指向当前结点的指针和存储value的vector引用,因为vector需要共同使用
	void ListFromTailToHead(ListNode *p, vector<int> &vec)
	{
		//当前指针不为空时说明节点存在
		if (p != NULL)
		{
			ListFromTailToHead(p->next, vec);//先递归后压value
			vec.push_back(p->val);
		}
	}
};