反转链表解析

反转链表,把链表的值全部反转过

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的地址

这是一种方法,运用三个指针依次往后走的形式,来进行反转;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值