面试高频算法题-单链表系列(1)-倒置链表

反转链表是一道比较基础的算法题啦,但是确实面试高频算法题,同学前两天字节一面就被问到了这个问题,写篇博文来记录一下

首先上题目:

思路都写在注释里啦,所以直接上代码啦:

var reverseList = function(head) {
//首先声明三个变量,分别为revHead:反转后的头节点,
//temp:记录旧的next节点
//cur:记录当前遍历的节点
//初始化反转后的头节点为空,当前遍历的节点为头节点
    var revHead=null,temp,cur=head;
    //当当前节点不为空时
    while(cur){
        temp=cur.next;//首先记录下当前遍历节点的下一个节点地址
        cur.next=revHead;//使得当前遍历节点的next节点指向当前节点的前一个节点,初始值为null
        revHead=cur;//反转后的头节点指向当前遍历的节点
        cur=temp;//当前遍历的节点向后移动
    }
    return revHead;
};

运行成功截图:

最后附上相应的画图解题思路,这里是参考的别人的博客,有助于理解哦

附上链接:https://www.cnblogs.com/dhls231/p/4773555.html

下面我们来用图解的方法具体介绍整个代码的实现流程:

初始状态:

第一次循环:

第一次循环过后,步骤①:pTemp指向Head,步骤②:pCur指向P1,步骤③:pTemp->pNext指向NULL。

此时得到的pRev为:

第二次循环:

第二次循环过后,步骤①:pTemp指向P1,步骤②:pCur指向P2,步骤③:pTemp->pNext指向Head。

此时得到的pRev为:

第三次循环:

第三次循环过后:步骤①:pTemp指向P2,步骤②:pCur指向P3,步骤③:pTemp->pNext指向P1。

此时得到的pRev为:

第四次循环:

 

第四次循环过后:步骤①:pTemp指向P3,步骤②:pCur指向NULL,步骤③:pTemp->pNext指向P2。

此时得到的pRev为:

至此,单链表的逆置完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值