Reverse Linked List
Total Accepted: 65133 Total Submissions: 179691 Difficulty: Easy
Reverse a singly linked list.
Hint:
递归:
A linked list can be reversed either iteratively or recursively. Could you implement both?
非递归:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* pre = NULL;
ListNode* next;
while(head!=NULL){
next=head->next;
head->next=pre;
pre=head;
head=next;
}
return pre;
}
};
递归:
1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9 class Solution {
10 public:
11 ListNode* reverseList(ListNode* head) {
12 if(head==NULL){
13 return NULL;
14 }
15 if(head->next==NULL){
16 return head;
17 }else{
18 ListNode* tem=reverseList(head->next);
19 head->next->next=head;
20 head->next=NULL;
21 return tem;
22 }
23
24 }
25 };