其题目意思较为简单,就是将链表中节点的顺序进行反转,第一个节点变为最后一个节点,最后一个节点变为第一个节点
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
// struct ListNode * rest = head;
// while (rest) {
// struct ListNode* tmp = rest->next;
// rest->next = head;
// head = rest;
// rest = tmp;
// }
// return head;
struct ListNode* prev = NULL;
struct ListNode* curr = head;
while (curr) {
struct ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
逻辑较为简单,只需要修改指针方向即可。
-
保存当前节点的下一个节点
-
将当前节点的 next 指针指向上一个节点
-
当前节点变为保存的下一个节点
结果:
在上述代码中,有一段备注释掉的代码,注释掉的执行不了,原因未知。