本节是循环链表(所谓循环链表,就是一个环,尾巴接着头,所以最后一个结点的下一个节点是头结点,其遍历时判断下一个结点是不是头节点即可),参照单链表进行修改
http://blog.youkuaiyun.com/devenzero/article/details/52049786
public class loopLinkList {
Node head;
Node current;
int size;
loopLinkList(){
head = current =new Node(null);
head.next = head;
size =0;
}
public Object getElem(int i){
Node p = head;
int j = 1;
while (j<i+1) {
p = p.next;
++j;
//System.out.println(p.element);
}
if(p==null||j>i+1) return null;
return p.element;
}
public boolean insert(int i ,Object e){
Node p = head;
int j = 1;
while (j<i) {
p = p.next;
++j;
}
if(p==null||j>i) return false;
Node s = new Node(null);
s.element = e;
s.next = p.next;
p.next = s;
size++;
return true;
}
public boolean delete(int i ){
Node p = head;
int j = 1;
while (j<i) {
p = p.next;
++j;
}
if(p==null||j>i) return false;
p.next = p.next.next;
size--;
return true;
}
public void showall(){
Node p = head;
while (!(p.next.equals(head))) {
p = p.next;
System.out.print(p.element+" ");
}
System.out.println();
}
}
这里遇到的 一个问题是空指针
loopLinkList(){
head = current =new Node(null);
head.next = head;
size =0;
}
这一段代码本来是这样子的
loopLinkList(){
head = current =new Node(head);
size =0;
}
因head结点未声明,故遍历时报错,改完之后方正确运行