Add metod till doubleLinkedList
Har försökt skriva en add metod till en double linked list. Metoden ska lägga till i listan på angivet index men fungerar inte som den ska. Vad missar jag? Har kommenterat extra noggrant för migsjälv
public void add(int index, E element) throws IndexOutOfBoundsException { //DOUBLE LINKED LIST
if (index < 0 || index > size()) {
throw new IndexOutOfBoundsException();
}
Node newNode = new Node(element); //Det här är noden som ska sättas in
if (index == 0) { //kollar först om index är 0, är den det ska man stoppa in i början av listan och sätta nytt head.
newNode.setmNextNode(head); //Sätter newNode före headnoden newNode----> headnoden => noder
head.setmPrevNode(newNode); //head pekar på newNode newNode<----> headnoden
newNode.setmPrevNode(null); //newNode pekar på null null<--->newNode--->headnoden
head = newNode; //Pekar head på newNode head => newNode----->noder
} else {
Node tempNode = head;
for (int i = 0; i < index; i++) { // Vi vill hitta indexet före index, för att med det indexet peka på indexet vi ska sätta in på
tempNode = tempNode.getmNextNode();
}
if (tempNode == null) { //Är tempNode null ska vi stoppa in i slutet i listan
tempNode.setmNextNode(newNode); // Sätt newNode som tempNode nästa nod tempNode---->NewNode
newNode.setmPrevNode(tempNode); //Sätt newNodes föregående nod till tempNode tempNode<---->NewNode
newNode.setmNextNode(null); //Sätt newNodes att peka mot null tempNode<--->NewNode---->null
tail = newNode; //Sätt newNode till tail tempNode<--->NewNode => Tail
} else { //Annars ska vi stoppa in i mitten av listan någonstans
//Skapar noden nextNode som är tempNodes nästa nod. Vi ska stoppa in newNode mellan tempNode och nextNode . tempNode--- newNode---- nextNode
Node nextNode = tempNode.getmNextNode();
tempNode.setmNextNode(newNode); //Sätter tempNode nästa nod till newNode tempNode----->newNode
newNode.setmPrevNode(tempNode); //Sätter newNodes föregånde nod till tempNode tempNode<---->newNode
newNode.setmNextNode(nextNode); //Sätter newnodes nästa nod till nextNode tempNode<---->newNode---->nextNode
nextNode.setmPrevNode(newNode); //Sätter nextNode prevNode till newNode tempNode<---->newNode<---->nextNode
}
}
size++;
}