interfaceIMyLinkList{public void clear();//清空
public intsize();public booleanisEmpty();public boolean add(intvalue);public void add(int index,intvalue);public int get(intindex);public int set(int index,intvalue);public int remove(intindex);
}class MyLinkList implementsIMyLinkList{private intTheSize;
@SuppressWarnings("unused")private int modCount=0;privateNode Begin;privateNode End;publicMyLinkList(){
DoClear();
}private static classNode{public intdata;publicNode prveious;publicNode next;public Node(intdata, Node prveious, Node next) {super();this.data =data;this.prveious =prveious;this.next =next;
}
}private voidDoClear(){
Begin= new Node(0, null, null);
End= new Node(0, Begin, null);
Begin.next=End;
TheSize=0;
modCount++;
}
@Overridepublic voidclear() {
DoClear();
}
@Overridepublic intsize() {returnTheSize;
}
@Overridepublic booleanisEmpty() {return size()==0;
}
@Overridepublic boolean add(intvalue) {
add(size(),value);//###############这里有问题
return true;
}
@Overridepublic void add(int index, intvalue) {
addBefore(getNode(index,0,size()),value);//得到index这个节点。在前边插入一个节点
}
@Overridepublic int get(int index) {//得到这个节点的data数据
returngetNode(index).data;
}
@Overridepublic int set(int index, int value) {//设置index节点处的打他数据
Node p =getNode(index);int oldData =p.data;
p.data=value;returnoldData;
}
@Overridepublic int remove(intindex) {returnremove(getNode(index));
}//初始化的时候出现了问题、
private void addBefore(Node p,int value){//添加一个新节点,只要new一个节点,并且改变节点的前驱和后继
Node newNode = newNode(value,p.prveious,p);
newNode.prveious.next=newNode;
p.prveious=newNode;
TheSize++;
modCount++;
}private Node getNode(int index){//得到
return getNode(index,0,size()-1);
}//getNode(index,0,size())
private Node getNode(int index,int lower,intupper){
Node p= null;//抛出异常
if(indexupper){throw newIndexOutOfBoundsException();
}//找到
if(index
p=Begin.next;for(int i=0;i
p=p.next;
}
}else{
// 但是这么却没有对p进行赋值。产生了空指针异常//p=End.previousfor(int i=size();i>index;i--){
p=p.prveious;
}
}returnp; 然后如果判断范围在else中,就GG }private intremove(Node p){
p.next.prveious=p.prveious;
p.prveious.next=p.next;
TheSize--;
modCount++;returnp.data;
}
}public classMyfirstLinkedList {public static voidmain(String[] args) {
IMyLinkList MyLinkedList= newMyLinkList();
System.out.println(MyLinkedList.add(12));
System.out.println(MyLinkedList.size());
}
}