Cześć, próbuję stworzyć jednokierunkową listę wiązaną. Stworzyłem póki co Klasę LinkedList w której znajduje się jeszcze klasa prywatna Element, oraz dwie metody: insert oraz get. Wygląda to w ten sposób:
package lists;
public class LinkedList implements interfaceList {
private Element head = new Element(null);
private int size;
public Student get(int index) throws IndexOutOfBoundsException{
if(index<0 || index>size) throw new IndexOutOfBoundsException();
Element find = head.getNext();
for(int i=0; i <= index; i++)
find = find.getNext();
return find.getStudent();
}
// dodaj na wskazaną pozycję
public void insert(int index, Student student){
if (index < 0 || index > size) throw new IndexOutOfBoundsException();
Element newElement = new Element(student);
Element find = head.getNext();
for (int i=0; i<index; i++){
find = find.getNext();
}
find.next = newElement;
newElement.next = find.getNext();
}
private static final class Element{
private Student student;
private Element next;
public Element(Student stu) {
setStudent(stu);
}
public void setStudent(Student stu)
{ student = stu; }
public Student getStudent(){
return student;
}
public void setNext(Element n){
next = n;
}
public Element getNext(){
return next;
}
}
}
Kiedy próbuję zrobić mały test by sprawdzić czy to co do tej pory mam działa:
package lists;
public class Test {
public static void main(String[] args) {
Student student1 = new Student("12345678", "Jan", "Kowalski", 2.5);
Student student2 = new Student("23423434", "Iza", "Kacala", 3.5);
Student student3 = new Student("32566566", "Anna", "Kok", 2.0);
Student student4 = new Student("98765432", "Piotr", "Ryba", 5.5);
Student student5 = new Student("23443223", "Krzysztof", "Nowak", 4.0);
LinkedList lista = new LinkedList();
lista.insert(0, student1);
lista.insert(1, student2);
lista.insert(2, student3);
lista.insert(3, student4);
lista.insert(4, student5);
System.out.println(lista.get(0));
System.out.println(lista.get(1));
System.out.println(lista.get(2));
System.out.println(lista.get(3));
System.out.println(lista.get(0));
}
}
Pojawia się błąd
Exception in thread "main" java.lang.NullPointerException
at lists.LinkedList$Element.access$0(LinkedList.java:30)
at lists.LinkedList.insert(LinkedList.java:23)
at lists.Test.main(Test.java:13)
Może mi ktoś pomóc w tym jak to naprawić?