/**
* 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;
}