题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ #include <stdlib.h> #include <time.h> #include <stdio.h> // 头插法实现逆序 struct ListNode* ReverseList(struct ListNode* head ) { if(head==NULL) return head;// 空链表直接返回--这里要返回head才对,返回NULL不对 struct ListNode *p,*tmpNode = (struct ListNode*)malloc(sizeof(struct ListNode)); // 这里注意tmoNode是一个新建节点,因此要malloc,而p只是一个临时指针,无需创建节点 tmpNode->next = NULL; while(head != NULL) { p = head; head = head->next; p->next = tmpNode->next; tmpNode->next = p; } return tmpNode->next; // 由于是无头节点,因此返回tmpNode的next节点 }#算法初学习#