1.实现单链表的逆转函数,输入一个链表,反转链表后,返回翻转之后的链表。
思路:设置三个链表(实际是两个)hou指向前一个节点、pHead指向中间节点、pre指向后一个节点,如下图。hou是前一个节点为空,pHead是传入的节点,pre是后一个节点。
因为单链表,需要换方向,那么这三个临时指针分别代码一个节点的上一个节点(hou),当前节点(pHead)和下一个节点(pre)。开始循环:
- pHead 指向当前节点,pre指向下一个节点。pHead = pre,pre = pre->next;
2.pHead->next = hou,hou = pHead;如何进入(1)
3.知道pre = NULL,返回pHead即可。
ListNode* ReverseList(ListNode* pHead) {
ListNode* hou = NULL;
ListNode* pre = pHead;
while (pre)
{
pHead = pre;
pre = pre->next;
pHead->next = hou;
hou = pHead;
}
return pre;
}