反转单向链表
-
思路:从第二个元素开始。
- 1、删除当前元素。
-
2、把当前元素放到头结点位置。
其中需要声明3个变量:headNode(头结点)、PreNode(前一个结点)、CurrentNode(当前结点)
具体步骤如图所示:
代码实现
/**
* 反转单链表方法实现类
*
* Created by liujinjin on 17/1/19.
*/
public class T1 {
public Node reverNode(Node node){
if(node == null) return null;
Node headNode = node; // 头结点
Node preHeadNode = node; // 当前结点前结点
Node currentNode = node.next; // 当前结点
while(currentNode != null){
// 删除
preHeadNode.next = currentNode.next;
currentNode.next = headNode;
// 重置值
headNode = currentNode;
currentNode = preHeadNode.next;
}
return headNode;
}
}
------------------------------
/**
* Node类
*
* Created by liujinjin on 17/1/19.
*/
public class Node {
Object value;
Node next;
public Node(Object value ,Node nextNode) {
this.value = value;
this.next = nextNode;
}
public Node(Object value) {
this.value = value;
}
public Node(){}
@Override
public String toString() {
return value + "==> " + next;
}
}
------------------------------
/**
* test代码类
*
* Created by liuxin on 17/1/19.
*/
public class Run {
public static void main(String[] args) {
Node node = new Node(1, new Node(2,
new Node(3, new Node(
4, new Node(5)
)))
);
System.out.println(node);
System.out.println(new T1().reverNode(node));
}
}