方法:
struct ListNode* reverseList(struct ListNode* head){
if(head == NULL)
{
return NULL;
}
struct ListNode* n1, *n2, *n3;
n1 = NULL;
n2 = head;
n3 = head->next;
while(n3 != NULL)
{
n2->next = n1;
n1 = n2;
n2 = n3;
n3 = n3->next;
}
n2->next = n1;
return n2;
}
思路:
可以创建三个结构体指针,前后排列,分别是n1,n2,n3。开始需要判断链表是否为空,为空直接返回头指针,不为空则开始反转链表。
n1指向头节点的前一个位置,n2指向头节点,n3指向头节点的后一个位置。让n2->next = n1,然后将这三个指针同时向右移动一位,再让n2->next = n1。循环这个过程一直到n3为空,最后再将最后一个节点指向倒数第二个节点。此时n2就是反转后的链表的头指针。