0

I am needing to implement a LinkedList and so far I have written my method to insert values in order in my list. I have my Node, front, as my instance datum for my class and when creating my first value and attempting to set the value of front's next to point at my new node I get a nullpointerexception.

public class Class1 {
private Node front = null;//Linked List pointer
private int comparisons = 0; //# of comparisons in Lists
//private LinkedList<Node> orderLink = new LinkedList<Node>();
public Class1() {

}

/*public Class1(int x){

}*/

public void insert (int num){
    Node current = null;
    Node previous = null;
    boolean placed = false;
    if (front == null){ //generate first node of list
        Node first = new Node(num, null);
        front.setNext(first);
        placed = true;
    }
    previous = front;
    current = front.getNext();
    Node step = new Node(num, null);
    if (placed == false){
    do{
        if (step.getData() < current.getData() && step.getData() > previous.getData() || step.getData() == current.getData() || step.getData() == previous.getData()){ //if the new data is between previous and current, place. If equals current, place.
            //Insert into List
            step.setNext(current);
            previous.setNext(step);
            placed = true;
        }
        if (previous == front && step.getData() < current.getData()){ //separate case for first node
            step.setNext(current);
            previous.setNext(step);
            placed = true;
        }
        if (current.getNext() == null && step.getData() > current.getData()){ //case for last node
            current.setNext(step);
            placed = true;
        }
        //move a space up the list
        previous = current;
        current = current.getNext();

    }while(previous.getNext() != null || placed == false);
    }

}

public int search(int num){
    int nodeIndex = 0;

    return 1; //Return index of num
}
public void delete (int num){
    //delete num from the list
}
public void traverse(){
    System.out.println(front.getNext());
    System.out.println(front.getNext().getNext());
    System.out.println(front.getNext().getNext().getNext());
    System.out.println(front.getNext().getNext().getNext().getNext());
    System.out.println(front.getNext().getNext().getNext().getNext().getNext());
}
public int getComparisons(){
    return comparisons;
}

public class Node {
    private Node next;
    private int data;
    public Node(){
        next = null;
    }
    public Node(int data, Node next){
        this.next = next;
        this.data = data;
    }
    public Node getNext(){
        return next;
    }
    public void setNext(Node nextNode){
        next = nextNode;
    }
    public int getData(){
        return data;
    }
    public void setData(int data){
        this.data = data;
    }
}

}

public class User {
public static void main(String[] args){
    Class1 test = new Class1();
    test.insert(1);
    test.insert(3);
    test.insert(5);
    test.insert(2);
    test.insert(4);

    test.traverse();
}

}

I'm just beginning to learn LinkedLists and I am unsure of what I implemented wrong. Any help would be greatly appreciated. And you really only need to look at my insert method, and inner Node class.

0

2 Answers 2

2

You have issue here:

front.setNext(first);

you cannot make any operation on null object (and in condition you have front is null). Probably here should be:

front = first;
Sign up to request clarification or add additional context in comments.

1 Comment

Especially since you already checked that front was null just before, you called for it :)
0

LinkedList uses three arguments -> (leftNode, rightNode, data)

1 Comment

Please expand your answer to include more information.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.