题目描述
输入一个链表,反转链表后,输出新链表的表头。
自己的思路
由于是之前面试问过的题目,所以看到就有了思路,而且自己当时是说了用两个指针,应该用3个指针(当前遍历的节点、它的前一个节点及后一个节点),所以印象很深,就直接理解图和代码吧,应该是很好理解的,就是里面的循环次数需要注意,最后一次是head变成nullptr了,循环终止,其它的好像没什么了。(可以想象成3个指针在移动,第一个指针是最后要求的表头)
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* head = pHead;
ListNode* next = nullptr;
ListNode* prev = nullptr;
while(head){
next=head->next;
head->next=prev;
prev=head;
head=next; //最后一次,head走到了尾结点后面的nullptr,次时返回prev即时反转后的链表的表头
}
return prev;
}
};
这次没有大佬的思路了,希望以后都没有大佬的思路了(好像说得有点矛盾,但我自己明白就好了)。