/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ struct ListNode* ReverseList(struct ListNode* head ) { //思路 //创建一个头结点,指向第一个结点,将该结点后面的所有结点,依次前移为头结点指向的第一结点; struct ListNode pHead = { .next = head }; struct ListNode *pMove = head->next; struct ListNode *pTemp = NULL; if(head == NULL) { return NULL; } while (pMove != NULL) { pTemp = pMove; // 记录要被移动的成员 head->next = pTemp->next; //断链 // 插入到头结点的后面,成为新的第一结点 pTemp->next = pHead.next; pHead.next = pTemp; pMove = head->next; // 继续处理下一个结点 } return pHead.next; }