removeLast()方法为什么会出现空指针

来源:4-5 从链表中删除元素

qq_往事_8

2019-01-13

为什么我的removeLast方法会出现空指针
remove()方法

//在链表中删除元素
	public E remove(int index) {
		if(index<0||index>=size) {
			throw new IllegalArgumentException("下标不在范围之内");
		}
		Node prev = dummyHead;
		for(int i=0;i<index;i++) {
			prev = prev.next;
		}
		Node retNode = prev.next;
		prev.next = retNode.next;
		retNode.next = null;
		size--;
		
		return retNode.e;
	}

removeLast()方法

//从链表中删除最后一个元素,返回删除的元素
	public E removeLast() {
		return remove(size-1);
	}

图片描述
图片描述

写回答

1回答

qq_往事_8

提问者

2019-01-13

老师 问题我通过查看你github里的代码解决了,是因为我的addFirst方法里多了一句size++,想问一下为什么addFirst里不需要size++,加上了这句话为什么会导致removeLast方法空指针。

0
3
liuyubobobo
回复
qq_往事_8
不会。程序要维持变量的语义。size就是指链表中的元素个数。每添加一个元素要+1;每删除一个元素要-1。多加或者多减都是不正确的。
2019-01-14
共3条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程