Lei宝啊:个人主页
题目:
描述:
给你单链表的头节点
head
,请你反转链表,并返回反转后的链表。接口:
struct ListNode* reverseList(struct ListNode* head){}
示例:
输入:
head = [1,2,3,4,5]
输出:
[5,4,3,2,1]
思路:
先将第一个节点的next指向NULL,同时还要记住原来第一个节点指向的下一个节点的位置
接下来我们希望第二个节点指向第一个节点,所以要用n1记录第一个节点的位置,n2记录第二个节点的位置,同时我们还需要一个n3去记录第三个节点的位置
这样一直往下走,直到到尾,有这样的情况:
所以我们给出的解决方法是当他为空时不往下走
实现代码 :
ListNode* n1 = NULL; ListNode* n2 = head; if(n2)ListNode* n3 = n2->next;while (D) {n2->next = n1;n1 = n2;n2 = n3;if (n3)n3 = n3->next; }return n1;