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.