Jednokierunkowa lista wiązana

0

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ć?

0

Odpal sobie debugger i sprawdź. Gdzieś coś w linijce insert jest nullem.

0

Ten błąd naprawdę coś znaczy, masz tam podane dokładnie linijki. LinkedList.java:23, czyli:

find.next = newElement;

find jest nullem, bo nie zainicjalizowałeś w żaden sposób pola next w klasie Element. (w 19 linijce getNext() zwraca nulla)

1 użytkowników online, w tym zalogowanych: 0, gości: 1