LintCode题目:翻转一个链表、
样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
LintCode链接:http://www.lintcode.com/zh-cn/problem/reverse-linked-list/
相关数据结构:
class ListNode {
public:
int val;
ListNode *next;
ListNode(int val) {
this->val = val;
this->next = NULL;
}
}
解决方案:
使用递归的思想解决问题。
解决代码:
/**
* Definition of ListNode
*
* class ListNode {
* public:
* int val;
* ListNode *next;
*
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The new head of reversed linked list.
*/
ListNode *reverse(ListNode *head) {
// write your code here
if(!head)
return NULL;
if(!head->next)
return head;
else{
ListNode* last = new ListNode(head->val);
ListNode* head_rev = reverse(head->next);
ListNode* temp = head_rev;
while(temp->next){
temp = temp->next;
}
temp->next = last;
return head_rev;
}
}
};