先写一个Node类
package com.example.entity;
public class Node {
private Node next;
private Integer index;
private String value;
public Node getNext() {
return next;
}
public Node(Integer index,String value,Node next){
this.index=index;
this.value= value;
this.next=next;
}
public Node(Integer index,String value){
this.index=index;
this.value= value;
}
public Node(){
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return "Node{" +
", index=" + index +
", value='" + value + '\'' +
'}';
}
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
再写一个测试类
package com.example.test;
import com.example.entity.Node;
public class testNode {
//循环追加子节点
public static Node getNode(){
Node tempNode = new Node(1,"node1");
Node node = new Node(1,"node1");
for (int i = 2; i < 5; i++) {
Node node1 = new Node(i,"node"+i);
if(i==2) node.setNext(node1);
else tempNode.setNext(node1);
tempNode=node1;
}
return node;
}
//反转
public static Node reversal(Node node){
Node resultNode=new Node();
Node tempNode = node.getNext();
Node tempNode2 = node.getNext();
while (tempNode!=null){
//返回最后一个节点
if(tempNode.getNext()==null) resultNode=tempNode;
tempNode=tempNode.getNext();
}
tempNode = node.getNext();
tempNode2 = resultNode;
while(tempNode!=null){
if(tempNode.getNext()==tempNode2){//当这个节点的下一个节点等于指定节点
tempNode2.setNext(tempNode);//把这个节点作为指定节点的下一个节点
tempNode2 = tempNode;//指向上一个节点
tempNode = node.getNext();//重新开始
}else {
//当这前节点为下一个节点
tempNode=tempNode.getNext();
}
//如果指定节点到第二个节点了 则跳出循环
if(node.getNext()==tempNode2) tempNode=null;
}
node.setNext(null);
//此时的指定节点为第二个节点了
tempNode2.setNext(node);
return resultNode;
}
public static void main(String[] args) {
//获取一个Node节点,其Node节点有3级字节点
Node node=getNode();
while (node!=null){
System.out.println(node.toString());
node=node.getNext();
}
System.out.println("反转");
//反转
node=getNode();
node=reversal(node);
while (node!=null){
System.out.println(node.toString());
node=node.getNext();
}
}
}
看输出