Java 中的自定义链表
Custom Linked List in Java
我正在尝试实现我自己的 LinkedList class,它可以添加和删除节点。我面临的唯一问题是,当我尝试打印链表的所有节点时,由于我的 while 循环,我无法打印最后一个节点。我不知道如何删除这个 bug/error.
public class LinkedList {
private Node head;
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.insert(5);
list.insert(10);
list.insert(13);
list.insert(15);
list.insert(20);
list.show();
list.delete(13);
list.show();
}
public void insert(int val) {
Node node = new Node(val);
node.next = null;
if (head == null) {
head = node;
} else {
Node temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = node;
}
}
public void delete(int val) {
Node temp = head, prev = null;
if (temp != null && temp.val == val) {
head = temp.next;
return;
}
while (temp != null && temp.val != val) {
prev = temp;
temp = temp.next;
}
if (temp == null) return;
prev.next = temp.next;
}
public void show() {
Node temp = head;
while (temp.next != null) {
System.out.print(temp.val + " ");
temp = temp.next;
}
System.out.println();
}
private class Node {
Node next;
int val;
private Node(int val) {
this.val = val;
}
}
}
根据您的代码,我只关注您的 show() 方法,因此您可以像这样更改:
public void show() {
Node temp = head;
while (temp != null) {
System.out.print(temp.val + " ");
temp = temp.next;
}
System.out.println();
}
这可以通过调试器轻松捕获。我希望这会帮助你。
更多请告诉我。
我正在尝试实现我自己的 LinkedList class,它可以添加和删除节点。我面临的唯一问题是,当我尝试打印链表的所有节点时,由于我的 while 循环,我无法打印最后一个节点。我不知道如何删除这个 bug/error.
public class LinkedList {
private Node head;
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.insert(5);
list.insert(10);
list.insert(13);
list.insert(15);
list.insert(20);
list.show();
list.delete(13);
list.show();
}
public void insert(int val) {
Node node = new Node(val);
node.next = null;
if (head == null) {
head = node;
} else {
Node temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = node;
}
}
public void delete(int val) {
Node temp = head, prev = null;
if (temp != null && temp.val == val) {
head = temp.next;
return;
}
while (temp != null && temp.val != val) {
prev = temp;
temp = temp.next;
}
if (temp == null) return;
prev.next = temp.next;
}
public void show() {
Node temp = head;
while (temp.next != null) {
System.out.print(temp.val + " ");
temp = temp.next;
}
System.out.println();
}
private class Node {
Node next;
int val;
private Node(int val) {
this.val = val;
}
}
}
根据您的代码,我只关注您的 show() 方法,因此您可以像这样更改:
public void show() {
Node temp = head;
while (temp != null) {
System.out.print(temp.val + " ");
temp = temp.next;
}
System.out.println();
}
这可以通过调试器轻松捕获。我希望这会帮助你。 更多请告诉我。