题目
给定一个单向链表, 将链表反转.
Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
思路
遍历链表, 每次都将当前节点加到上一个节点后面.
ListNode* reverseList(ListNode* head) {
if (head == nullptr) return head;
ListNode *after = nullptr;
while (head != nullptr && head->next != nullptr) {
ListNode *temp = new ListNode(head->val);
temp->next = after;
after = temp;
head = head->next;
}
head -> next = after;
return head;
}
总结
使用了额外内存空间, 还可以不创建新的节点来实现.
网友评论