绕了一点,但也对的写法:
ListNode* reverseList(ListNode* head) {
if (head == NULL) {
return NULL;
}
if (head->next == NULL) {
return head;
}
ListNode* cur = head, * temp1 = cur->next, * temp2;
cur->next = NULL;
while (temp1->next != NULL) {
temp2 = temp1->next;
temp1->next = cur;
cur = temp1;
temp1 = temp2;
}
temp1->next = cur;
return temp1;
}
简洁一点的写法:
ListNode* reverseList(ListNode* head) {
ListNode* pre = NULL, *cur = head;
while (cur) {
ListNode* next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}