题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:
1、如果链表为空,返回;
2、定义两个节点指针pl = pHead 、pr = pHead->next;
3、令 pl -> next = NULL(链表反转后的结尾);
4、每一次循环,令:
pHead = pr;(pHead指向准备改变节点内指针指向的节点pr)
pr = pr->next;(在节点内指针指向改变前,先把下一个节点准备好)
pHead->next = pl; (改变节点内指针指向前一个节点pl)
pl = pHead;(准备好下一个pl)
5、当 pr = NULL 时,反转完成。pHead 为新的头结点,返回pHead即可。
struct ListNode* ReverseList(struct ListNode* pHead ) {
if(!pHead) return NULL;
struct ListNode* pl = pHead;
struct ListNode* pr = pHead->next;
pl->next = NULL;
while(pr)
{
pHead = pr;
pr = pr->next;
pHead->next = pl;
pl = pHead;
}
return pHead;
}
本文详细介绍了一种链表反转算法的实现思路与步骤。通过定义两个指针,不断改变节点的指针指向,最终完成链表的反转。适用于理解链表基本操作及算法实现。
1021

被折叠的 条评论
为什么被折叠?



