已知单向链表,让链表实现翻转
实现思路 : 单向链表A – > B – > C – > D,只要调换每个节点的上下节点位置即可实现翻转,但是单向链表翻转位置后下一个节点都是空的,但是实际上下一个节点的位置就是下一个节点的上一个节点位置,Emmm…听起来有点像废话,但实际上下一个节点位置的上一个节点位置是已知的,但是反转后当前节点的下一个节点位置是未知的… 可能描述的不是太清楚,直接上图
代码如下 :
public class Node {
private Integer value;
private Node pre;
private Node next;
public Node(Integer value) {
this.value = value;
}
public Node getPre() {
return pre;
}
public void setPre(Node pre) {
this.pre = pre;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
/**
* 思路就是把现在的head的上下节点调换位置
*
* @param head 单向链表
* @return 转换后的链表
*/
public static Node reverseLinkedList(Node head) {
Node pre = null;
while (head != null) {
// 获取上一个节点
Node next = head.getNext();
// 设置下一个节点的位置为上一个节点
head.setNext(pre);
// 因为head下一个节点的上一个节点(pre)为null 所以需要提前设置
// 实际上下一个节点的上一个节点不就是自己吗!!!
pre = head;
// 遍历下一个节点
head = next;
}
return pre;
}
}
5万+

被折叠的 条评论
为什么被折叠?



