问题描述
所给数据结构
解题思路:
- 核心思想 :就是每个当前节点Cur的next指针要指向它的上一个节点Prev;
- 为了将剩下的节点也进行逆转,所以链表要继续沿着当前节点遍历下去;
- 此时Prev可以转去指向逆转后的节点的头节点,这样可以始终保证Cur节点指向Prev节点;
代码实现
ListNode* reverseList(ListNode *head){
ListNode* cur=head;ListNode* prev=NULL;
while(cur){
ListNode* temp=cur->next;
cur->next=prev;//当前节点指向前驱的节点
prev=cur;//prev 前驱节点指向 反转后的链表的头节点
cur=temp;//cur 指向当前节点的下一个节点ps:保证链表后续节点顺利遍历
}
return prev;
}