Reverse a singly linked list.
Example:
Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL Follow up:
A linked list can be reversed either iteratively or recursively. Could
you implement both?
1、栈16ms
class Solution1 {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL) {
return NULL;
}
stack<int> s1;
while (head->next != NULL) {
s1.push(head->val);
head = head->next;
}
ListNode* ret = head;
while (!s1.empty()) {
ret->next = new ListNode(s1.top());
ret = ret->next;
s1.pop();
}
return head;
}
};
2、指针8ms
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL) {
return NULL;
}
ListNode* first = head;
ListNode* target = head->next;
while (target!=NULL) {
first->next = target->next;
target->next = head;
head = target;
target = first->next;
}
return head;
}
};