class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The new head of reversed linked list.
*/
ListNode *reverse(ListNode *head) {
ListNode *prev = NULL;
while (head != NULL) {
ListNode *temp = head->next;
head->next = prev;
prev = head;
head = temp;
}
return prev;
}
};
实在是不理解,希望大神可以帮忙分析一下
读取第一个节点,head
将head的下一个节点存入temp
读取再下一个节点prev
将head作为新的temp
这样遍历完成,最后一个prev就是新的链表头,而它和它之前节点的next已经从后继节点纠正为前驱结点,也就是翻转了链表
这是参考大家的回答 我自己分析的草图 谢谢