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

}

}

java的nullpoint_java.lang.NullPointerException相关推荐

  1. java.lang.NullPointerException异常原因及解决

    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性. 给出三种情况, 第一 ...

  2. java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean java.lang.String.equals(j

    今天切正式环境出现的空指针 记录一下 下面是错误 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean j ...

  3. 绝望,上传文件失败。。遇到并解决java.lang.NullPointerException

    解决报错:java.lang.NullPointerException 解决方法:将文件的编码方式改为utf-8即可! 截图: 修改成功后: 代码: import os import json imp ...

  4. java.lang.NullPointerException空指针问题

    对于一个Android新手而言遇见空指针问题是在所难免的.比如在调试时一开程序就出现"很抱歉!'XXX'已停止运行!"这是空指针的一种表现. 为什么会出现空指针? 所谓空指针异常, ...

  5. 解决非controller使用@Autowired注解注入报错为java.lang.NullPointerException问题

    解决非controller使用@Autowired注解注入报错为java.lang.NullPointerException问题 参考文章: (1)解决非controller使用@Autowired注 ...

  6. 轻松搞定项目中的空指针异常Caused by: java.lang.NullPointerException: null

    轻松搞定项目中的空指针异常Caused by: java.lang.NullPointerException: null 参考文章: (1)轻松搞定项目中的空指针异常Caused by: java.l ...

  7. 空指针错误 java.lang.NullPointerException 浅谈

    使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类型(double,float,boolean,char,int,long)一 ...

  8. java.lang.NullPointerException错误分析

    java.lang.NullPointerException是什么错误 你使用了空的指针.在java中虽然号称抛弃了C++中不安全的指针,但其实他所有的东西你都可以理解为指针.这种情况一般发生在你使用 ...

  9. java 空指针异常(java.lang.NullPointerException)

    在Java中对值为null的指针调用任何方法,就会引发空指针异常(java.lang.NullPointerException).空指针异常绝对 是Java中最难查找和调试的一种异常,你永远无法得到任 ...

最新文章

  1. wxpython视频教程-单片机C语言入门_单片机教程_单片机编程语言 - C语言网
  2. 数据结构:四种排序的比较
  3. 车险赔付率分析报告_车险改革究竟是涨价还是降价了?9月19号后买会便宜吗?...
  4. 5.linux目录结构介绍
  5. 嵌入式Linux系统BSP的设计与实现
  6. mybatis:延迟加载时不要在get/set方法上面添加final关键字(原创)
  7. burp过期了,换一个
  8. spring 如何决定使用jdk动态代理和cglib(转)
  9. 端午节,我们好好聊聊程序员这个群体
  10. 下标要求数组或指针类型_C语言,数组循环哪家好,指针or下标?
  11. 谷歌浏览器无法登陆百度贴吧
  12. 文件格式介绍:文本,图片,音频,视频
  13. JUCE框架教程(7)——AudioBuffer基础如何生成音频Output
  14. 测不准原理(还真有此事?)
  15. 高等数学——微分方程
  16. 【python实现网络爬虫21】天眼查企业数据获取
  17. 《金融怪杰》读书笔记
  18. 能测试成绩的学习软件,普通话学习测试这个软件上,我平均成绩能达到二甲,请问如果在真正的普通话考试上,我大概能得到什么等级...
  19. java-net-php-python-jspm综合彩妆店管理系统查重PPT计算机毕业设计程序
  20. 卷积神经网络与神经网络,卷积神经网络基础知识

热门文章

  1. Uni-app登录态管理(vuex)
  2. (转)一致性哈希算法原理
  3. 还记得这些常用String方法吗?
  4. Pytorch + Win10系统 + pip安装+ CUDA9.1版本(安装CUDA10.2版本)
  5. 两种方式实现线程通信:三个线程交替打印AABBCC
  6. python中iloc切片_Dataframe选择行列loc,iloc,切片,布尔索引,条件判断等
  7. java 生成 checksum
  8. IT运维面试问题总结-LVS、Keepalived、HAProxy、Kubernetes、OpenShift
  9. Linux(redhat)镜像
  10. 未定义标识符“L“,sprintfw/swprintf用法,TEXT宏