public class test {
public static void main(String[] args) {
Link l = new Link();
Node n1 = new Node(1,null);
Node n2 = new Node(2,null);
Node n3 = new Node(3,null);
Node n4 = new Node(4,null);
l.add(n1);
l.add(n2);
l.add(n3);
l.add(n4);
System.out.println(l.count());
l.print();
try {
l.remove(3);
l.print();
System.out.println("=====");
} catch (MyException e) {
e.printStackTrace();
}
}
}
public class Node {
Object element;
Node next;
public Node() {}
public Node(Object element,Node next) {
this.element = element;
this.next = next;
}
}
public class Link {
Node header = null;
static int len = 0;
public void add(Node n) {
if(header == null) {
header = n;
}else {
Node currentLast = findLast(header);
currentLast.next = n;
}
}
private Node findLast(Node n) {
if(n.next == null) {
return n;
}
return findLast(n.next);
}
public int count() {
Node n = header;
while(n != null) {
len = len + 1;
n = n.next;
}
return len;
}
public void remove(int k) throws MyException {
if(header == null) { throw new MyException("头指针为空,不能删去节点"); }else {
Node currentSecondLast = research(k - 1);
Node removeNode = research(k);
System.out.println("removeNode.element"+removeNode.element);
if(removeNode.next!=null) {
currentSecondLast.next =research(k+1);
removeNode.next = null;
}else {
currentSecondLast.next = null;
}
}
}
private Node research(int i) {
Node n = header;
if(i == 1) {
return n;
}else{
for(int j = 2;j<i + 1;j++) {
n = n.next;
}
return n;
}
}
public void print() {
Node temp = header;
while(temp != null) {
System.out.print(temp.element + " ");
temp = temp.next;
}
System.out.println();
}
}
public class MyException extends Exception{
public MyException() {}
public MyException(String s) {
super(s);}
}
``