/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
if(!head || (head->next == NULL)) //如果链表为空,或者链表中只有一个节点
{
return head;
}
struct ListNode *p; //标记正在要移动的节点
struct ListNode *n; //标记要移动节点的下一个节点 p->next
p = head->next;
head->next = NULL; //头结点单独处理
while(p->next != NULL) //处理中间节点
{
n = p->next;
p->next = head;
head = p;
p = n;
}
p->next = head; //尾节点单独处理
head = p;
return head;
}