java单向链表实现
class NodeManager {
private Node root;
private Integer currentIndex = 0;
public void add(Object obj) {
Node node = new Node(obj);
if (this.root == null)
this.root = node;
else
this.root.addNode(node);
}
public void add(Object a1, Object a2) {
Node node = new Node(a2);
if (this.root.obj == a1) {
node.after = this.root.after;
this.root.after = node;
} else if (this.root.after != null) {
this.root.addNode(a1, node);
} else {
System.out.println("链表节点=" + a1 + "不存在");
}
}
public void remove(Object a1) {
if (this.root.obj == a1) {
this.root = this.root.after;
} else if (this.root.after != null) {
this.root.removeNode(a1);
} else {
System.out.println("链表节点=" + a1 + "不存在");
}
}
public void removeIndex(Integer index){
currentIndex =0;
if (this.root == null){
System.out.println("链表没有任何内容");
}else if (currentIndex == index){
this.root = this.root.after;
}else if (this.root.after != null){
this.root.removeIndexNode(index);
}else
System.out.println("链表中没有索引="+index +"的节点");
}
public void set(Object a1, Object a2) {
Node node = new Node(a2);
if (this.root.obj == a1) {
node.after = this.root.after;
this.root = node;
} else if (this.root.after != null) {
this.root.setNode(a1, node);
} else {
System.out.println("链表节点=" + a1 + "不存在");
}
}
public Object get(Integer index) {
currentIndex = 0;
if (this.root == null) {
return "链表中没有 '" + index + "'的索引";
} else if (index == currentIndex) {
return this.root.obj;
} else
return this.root.getNode(index);
}
public void showAll() {
System.out.println("*******************************************");
System.out.println(this.root.obj);
this.root.showNode();
}
public boolean contains(Object obj) {
if (this.root.obj == obj)
return true;
else if (this.root.after != null)
return this.root.containsNode(obj);
else
return false;
}
public Integer size() {
currentIndex = 0;
if (this.root == null)
return currentIndex;
else
return this.root.sizeNode();
}
private class Node {
private Object obj;
private Node after;
public Node(Object obj) {
this.obj = obj;
}
public void addNode(Node node) {
if (this.after == null)
this.after = node;
else
this.after.addNode(node);
}
public void addNode(Object a1, Node node) {
if (this.after.obj == a1) {
node.after = this.after.after;
this.after.after = node;
} else if (this.after.after != null) {
this.after.addNode(a1, node);
} else {
System.out.println("链表节点=" + a1 + "不存在");
}
}
public void setNode(Object a1, Node node) {
if (this.after.obj == a1) {
node.after = this.after.after;
this.after = node;
} else if (this.after.after != null) {
this.after.setNode(a1, node);
} else {
System.out.println("链表节点=" + a1 + "不存在");
}
}
public void showNode() {
if (this.after != null) {
System.out.println(this.after.obj);
this.after.showNode();
} else
return;
}
public void removeNode(Object a1) {
if (this.after.obj == a1) {
this.after = this.after.after;
} else if (this.after.after != null) {
this.after.removeNode(a1);
} else {
System.out.println("链表节点=" + a1 + "不存在");
}
}
public Object getNode(Integer index) {
currentIndex++;
if (currentIndex == index) {
return this.after.obj;
} else if (this.after.after != null) {
return this.after.getNode(index);
} else {
return "链表节点索引=" + index + "不存在";
}
}
public boolean containsNode(Object obj) {
if (this.after.obj == obj)
return true;
else if (this.after.after != null)
return this.after.containsNode(obj);
else
return false;
}
public Integer sizeNode() {
currentIndex++;
if (this.after != null) {
return this.after.sizeNode();
} else
return currentIndex;
}
public void removeIndexNode(Integer index) {
currentIndex++;
if (currentIndex == index)
this.after = this.after.after;
else if (this.after.after != null)
this.after.removeIndexNode(index);
else
System.out.println("链表节点索引=" + index + "不存在");
}
}
}
class test {
public static void main(String[] args) {
NodeManager manager = new NodeManager();
manager.add("1");
manager.add("2");
manager.add("3");
manager.add("4");
manager.add("5");
manager.removeIndex(6);
System.out.println("get(4)="+manager.get(4));
System.out.println("size()"+manager.size());
System.out.println("contains(16)"+manager.contains("16"));
System.out.println("contains(14)"+manager.contains("14"));
manager.showAll();
}
}