java的nullpoint_java.lang.NullPointerException

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());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值