public class LinkNode {
private Node headNode;
private Node currentNode;
private int size;
public LinkNode() {
size = 0;
headNode = null;
currentNode = null;
}
public Node getHeadNode() {
return headNode;
}
public void setHeadNode(Node headNode) {
this.headNode = headNode;
}
public Node getCurrentNode() {
return currentNode;
}
public void setCurrentNode(Node currentNode) {
this.currentNode = currentNode;
}
public void add(Node node) {
if (headNode == null) {
headNode = node;
currentNode = headNode;
} else {
currentNode.setNext(node);
currentNode=node;
}
size++;
}
public Node get(int i) {
if (i < 0 || i >= size) {
return null;
}
Node node = headNode;
for (int j = 0; j <= i; j++) {
if (j != i) {
if (node.getNext() != null) {
node = node.getNext();
continue;
} else {
break;
}
} else {
return node;
}
}
return node;
}
public boolean isEmpty() {
return headNode == null;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
public class FlipList {
public static LinkNode flipList(LinkNode nodeList) {
if (nodeList.isEmpty()) {
return null;
}
Node preNode = null;
Node currentNode = nodeList.getHeadNode();
Node nextNode = null;
while (currentNode != null) {
nextNode=currentNode.getNext();
currentNode.setNext(preNode);
preNode=currentNode;
currentNode=nextNode;
}
nodeList.setHeadNode(preNode);
return nodeList;
}
}
private static void testFlipList() throws Exception {
LinkNode ln = new LinkNode();
for (int i = 0; i < 3; i++) {
Node node = new Node(i);
ln.add(node);
if (ln.get(i) != null) {
System.out.println(ln.get(i).getData());
} else {
System.out.println(i);
}
}
FlipList.flipList(ln);
for (int j = 0; j < ln.getSize(); j++) {
System.out.println(ln.get(j).getData());
}
TimeUnit.MILLISECONDS.sleep(11);
}