老师您好!请问一个问题:我在链表那一章碰到了问题
这是我的测试代码
public static void main(String[] args) {
// write your code here
LinkedList<Integer> linkedList=new LinkedList<>();
for (int i=0;i<5;i++){
linkedList.addFront(i);
System.out.println(linkedList);
}
}
这是我的LinkedList类
public class LinkedList<E> {
private class Node{
public E e;
public Node next;
public Node(E e,Node next){
this.e=e;
this.next=next;
}
public Node(E e){
this(e,null);
}
public Node(){
this(null,null);
}
@Override
public String toString() {
return e.toString();
}
}
//fake head node
private Node dummyHead;
private int size;
public LinkedList(){
dummyHead=new Node(null,null);
size=0;
}
public int getSize(){
return size;
}
public boolean isEmpty(){
return size==0;
}
public void addFront(E e){
add(0,e);
}
public void add(int index,E e){
if (index<0||index>size) {
throw new IllegalArgumentException("Add failed Illegal index");
}
Node prev=dummyHead;
for (int i=0;i<=index;i++){
prev=prev.next;
}
prev.next=new Node(e,prev.next);
size++;
}
public void addLast(E e){
add(size,e);
}
public E get(int index){
if(index<0||index>size){
throw new IllegalArgumentException("Get failed. index is illegal");
}
Node cur=dummyHead.next;
for (int i=0;i<index;i++){
cur=cur.next;
}
return cur.e;
}
public E getFirst(E e){
return get(0);
}
public E getLast(E e){
return get(size);
}
public void set(int index,E e){
if(index<0||index>size){
throw new IllegalArgumentException("Set failed. index is illegal");
}
Node cur=dummyHead.next;
for (int i=0;i<index;i++){
cur=cur.next;
}
cur.e=e;
}
public boolean contains(E e){
Node cur=dummyHead.next;
while(cur!=null){
if(cur.e.equals(e)){
return true;
}
cur=cur.next;
}
return false;
}
@Override
public String toString() {
StringBuilder res=new StringBuilder();
res.append("LinkedList:");
Node cur=dummyHead.next;
while(cur!=null){
res.append(cur.e);
res.append(cur+"-> ");
cur=cur.next;
}
res.append("NULL");
return res.toString();
}
}
我测试出来报的错误是空指针 然后我debug了下
上面说构造函数里就报了空指针 请问老师怎么改这个dummyHead的赋值呢?