面试常见算法之---反转链表

注:此文原创,转载注明出处
面试常见算法之—反转链表
单链表置逆是面试中常见的算法之一,很简单,想用最简洁最通俗易懂的方式描述下这个算法,希望大家在面试中思路清晰,半分钟秒杀它

思路:以单链表有4个节点为例,1->2->3->4
反转就是取2,放到1前面;继续取3放到2前面,取4放到3前面。注意取是指的next指针指向它,链表的内存空间不是连续的,我们要做的就是把next指的对象变一变。
用一个tail指针指向第一个节点(因为它后面的最后都会跑到它前面),让这个指针指向的对象始终不变,让tail.next不断调整,依次指向后面。
cur指针指向当前节点,要做的就是把cur 逻辑前移(比如 cur==2,要移到1前面,1和3链起来;3要移到2前面,把1和4链起来;4要移到最前面,1.next=null,置逆完成)
head指向 调整之后的链表头,最后指在了4

代码如下:

public class Node{
public int value;
public Node next;
public Node(int data){
this.value=data;
}
}
public Node reverseList(Node head){
Node tail=head;
Node cur=null;
while(tail.next!=null){
cur=tail.next;
tail.next=cur.next;
cur.next=head;
head=cur;
}
return head;

}
以上仅仅是我的思路,仅供参考,有问题请留言

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值