方法一
栈
ListNode* reverseList(ListNode* head) {
if(head == nullptr) return nullptr;
stack<ListNode*> q;
ListNode result(0);
ListNode *cur = &result;
while(head != nullptr){
q.push(head);
head = head->next;
}
while(!q.empty()){
cur->next = q.top();
cur = cur ->next;
q.pop();
if(q.empty())
cur->next = nullptr;
}
return result.next;
}
方法二
双指针
ListNode* reverseList(ListNode* head) {
ListNode *cur = nullptr;
ListNode *pre = head;
ListNode *tmp;
while(pre != nullptr){
tmp = pre->next;
pre->next = cur;
cur = pre;
pre = tmp;
}
return cur;
}