전방과 후방에 삽입 할 수있는 이중 링크 목록을 만들뿐 아니라 목록에서 모든 노드를 삭제할 수 있습니다. 문제는 그것이 작동하지 않는다는 것입니다 오프 제공하고 하나는 NullPointerException을 제공하거나 그냥 exist.The 코드는 않지만 정수도 존재하지 않는다고 말한다 :Java의 이중 링크 된 목록에서 노드를 임의로 삭제하는 방법은 무엇입니까?
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;
}
}
}
당신의'당신이'data' 변수를 전달하지 않을 Node'. 'node n = 새로운 노드 (데이터);가되어야합니까? – ChickenFeet
나는 그것을 시도했다, 그것은 삭제 방법을 위해 작동하지 않을 것이다. 호환되지 않는 피연산자 유형 int를 numbers.Node에 대해 얻습니다. – user3394363
코드에 여러 논리 오류가 있습니다. 자신의 교육을 위해 할 수있는 최선의 방법은 한 번에 한 줄씩 IDE 디버거의 코드를 단계별로 실행하고 각 구문 다음에 나오는 변수를 검사하여 무슨 일이 일어나는지 확인하는 것입니다. –