题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
  public:
 		ListNode *resolve(ListNode *pHead)
	{
		if (!pHead)
			return NULL;
		ListNode *pNextNode = resolve(pHead->next);
		if (!pNextNode)
		{
			return pHead;
		}
		else
		{
			pNextNode->next = pHead;
			pHead->next = NULL;
			return pHead;
		}
	}

	ListNode* ReverseList(ListNode* pHead) {

		ListNode *ret = pHead;
		while (ret && ret->next)
		{
			ret = ret->next;
		}

		resolve(pHead);

		return ret;
	}
};

思路:
	首先定位最后一个子节点: 自然是while和递归中的递;
	

全部评论

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务