Problem:
Reverse a singly linked list.
Analysis:
Solutions:
C++:
ListNode* reverseList(ListNode* head) {
if(head == NULL || head->next == NULL)
return head;
ListNode *new_head = NULL;
while(head != NULL) {
ListNode *temp_old_head = head->next;
if(new_head == NULL) {
new_head = head;
head->next = NULL;
} else {
ListNode *temp_new_head = new_head;
new_head = head;
new_head->next = temp_new_head;
}
head = temp_old_head;
}
return new_head;
}
Java:
Python: