一.单链表反转
单链表的反转,是面试中的一个高频题目
需求:
原链表中数据为:
1->2->3>4
反转后链表中数据为:
4->3->2->1
反转
API
:
public void reverse() :对整个链表反转
public Node reverse(Node curr):反转链表中的某个结点curr,并把反转后的curr结点返回
使用递归可以完成反转,递归反转其实就是从原链表的第一个存数据的结点开始,依次递归调用反转每一个结点,直到把最后一个结点反转完毕,整个链表就反转完毕。
代码
:
public void reverse(){
if(N==0){
return;
}
reverse(head.next);
}
public Node reverse(Node curr){
if(curr.next==null){
head.next=curr;
return curr;
}
//当前结点的上一个结点
Node pre = reverse(curr.next);
pre.next = curr;
//当前结点的下一个结点设为null
curr.next=null;
//返回当前结点
return curr;
}
二.快慢指针
快慢指针指的是定义两个指针,这两个指针的移动速度一块一慢,以此来制造出自己想要的差值&#x