题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param pHead ListNode类 * @return ListNode类 */ struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here struct ListNode* nhead=NULL;//新的头结点 struct ListNode* nex=pHead;//指向的下一个节点 while (pHead) { nex=pHead->next; pHead->next=nhead; nhead=pHead; pHead=nex; } return nhead; }
需要两个节点,一个指向当前节点的下一个节点,一个指向反转后的新链表的头结点。
最开始反转链表没有,头结点指向NULL,
1.首先要获取当前节点的下一个节点,那么这个节点的next就没用啦,
2.可以修改了,改为反转链表的上一个的头结点的地址。
3.然后新的头结点就是当前这个节点了,
4.这个节点修改完了,继续修改下一个节点。