反转链表,把链表的值全部反转过
1,2,3,4,5 反转后 5,4,3,2,1
struct ListNode* reverseList(struct ListNode* head)
{
if(head==NULL||head->next==NULL)
{
return head;
}
}
第一步我们先判断我们操作的链表里面的原始是否为空或者为1个元素
如果是,就直接返回head的地址就好了;
struct ListNode* n1=NULL,*n2=head,*n3=head->next;
第二步,我们定义三个结构体指针变量,让他们分别指向NULL,头,和头的下一个
while(n2)
{
//反转
n2->next=n1;
//迭代
n1=n2;
n2=n3;
if(n3)
n3=n3->next;
}
return n1;
第三步进行反转,先把原来的头head指向NULL;然后再进行迭代
把head的地址给n1,然后再把n3的地址给n2;
然后判断n3是否为空,如果为空的话就不执行n3->next;这句
n3=n3->next;指向下一个;
1->2->3->4->5->NULL 翻转后 5->-4->3->2->1->NULL;
最后在返回n1的地址 即是5的地址
这是一种方法,运用三个指针依次往后走的形式,来进行反转;