Ich mache eine doppelt verknüpfte Liste, die Sie an der Front-und Rückseite einfügen können, sowie alle Knoten aus der Liste löschen, solange es existiert. Das Problem ist, dass es nicht funktioniert und gibt ab und entweder gibt eine Nullpointer ab oder es sagt nur, dass Integer nicht einmal existiert, obwohl es nicht exist.The Code ist:Wie kann ich einen beliebigen Knoten zufällig aus einer Doubly Linked List in Java löschen?
public class Numbers {
Node head = null; //Head of the list
Node tail = null; //end of the doubly list
int size = 0;
public void FrontInsert(int data) {
Node n = new Node();
if (head == null) {
head = n;
} else {
n.prev = head;
head.next = n;
head = n;
}
size++;
}
public void RearInsert(int data) {
Node n = new Node();
if (head == null) {
head = n;
tail = n;
} else {
n.next = tail;
tail.prev = n;
tail = n;
}
size++;
}
public void Delete(int x) {
if (size == 0) {
System.out.println("The list is empty.");
}
if (head.data == x) {
head = head.next;
if (head != null) {
head.prev = null;
}
size--;
return;
}
tmp = head;
while (tmp != null && tmp.data != x) {
tmp = tmp.next;
}
if (tmp == null) {
System.out.println("That integer does not exist.");
return;
}
if (tmp.data == x) {
tmp.prev.next = tmp.next;
if (tmp.next != null) {
tmp.next.prev = tmp.prev;
}
}
size--;
}
public void printList() {
while (head != null) {
System.out.print(head.data + " ");
head = head.prev;
}
}
public static void main(String[] args) {
Numbers nu = new Numbers();
}
class Node {
Node prev;
Node next;
int data;
public void Node(int data) {
this.data = data;
next = null;
prev = null;
}
}
}
Wenn Sie erstellen Ihre 'Node' Sie vorbei es nicht die' data' Variable. Sollte 'node n = new Node (data) sein, richtig? – ChickenFeet
Ich habe es versucht, es wird nicht für die Löschmethode funktionieren. Ich bekomme Inkompatible Operandentypen int für numbers.Node. – user3394363
Sie haben mehrere logische Fehler in Ihrem Code. Das Beste, was Sie für Ihre eigene Ausbildung tun können, ist, den Code in Ihrem IDE-Debugger Zeile für Zeile durchzugehen und die Variablen nach jeder Anweisung zu untersuchen, um zu sehen, was passiert. –