c_cpp 206.反向链接清单 - 简单 - 2018.7.31
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 206.反向链接清单 - 简单 - 2018.7.31相关的知识,希望对你有一定的参考价值。
/**
使用中间量不断保存前面处理过程中被覆盖的内容
解法解析:
1:先处理链表尾部的元素,再回头处理前面的元素
2:需要先把最后面的元素保存后返回作为新的链表头
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *newH;
if (!head || head->next == NULL) {
return head;
} else {
newH = reverseList(head->next);
}
head->next->next = head;
head->next = NULL;
return newH;
}
};
//非递归
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (!head) return NULL;
ListNode *preNode = NULL;
ListNode *nextNode;
// 这里不能直接使用 head != NULL,因为要确保跳出循环的时候,head 不为 NULL
while (head->next != NULL) {
nextNode = head->next;
head->next = preNode;
preNode = head;
head = nextNode;
}
head->next = preNode;
return head;
}
};
以上是关于c_cpp 206.反向链接清单 - 简单 - 2018.7.31的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 92.反向链接清单II - 中 - 2018.7.31
java 206.反向链接列表(#1递归).java
java 206.反向链接列表(#1递归).java
java 206.反向链接列表(#1递归).java
java 206.反向链接列表(#1递归).java
java 206.反向链接列表(#1递归).java