gpt4 book ai didi

java - `LinkedList` 的实现。删除特定的 `Link` (`Node` )

转载 作者:行者123 更新时间:2023-11-29 05:02:21 24 4
gpt4 key购买 nike

伙计们,我仍然在使用方法 public void deleteLink(String data) 时遇到问题,我需要用给定的 String 删除指定的 Link数据。我已经实现了它,但仍然无法正常工作。请 smb 看一下 deleteLink() 方法,看看有什么问题?其他所有方法都可以正常工作。提前致谢!

package LinkedList;

public class Link{

public Link next;
private String data;

public Link(String data){
this.data = data;
this.next = null;
}

public void display(){
System.out.println(data);
}

public String getData(){
return this.data;
}
}

class LinkedList{

private Link firstLink;

public LinkedList(){
this.firstLink = null;
}

public boolean isEmpty(){
return (this.firstLink == null);
}

public void insert(String data){
Link newLink = new Link(data);
newLink.next = firstLink;
firstLink = newLink;
}

public Link deleteFirst(){
Link deletedOne = null;
if(isEmpty()){
System.out.println("The list is empty");
System.exit(0);
}
else{
deletedOne = firstLink;
firstLink = firstLink.next;
}
return deletedOne;
}

public boolean search(String data){
if(isEmpty()){
System.out.println("The list is empty");
System.exit(0);
}
else{
Link current = firstLink;
while(current != null){
if(current.getData().equals(data)){
return true;
}
else{
current = current.next;
}
}
}
return false;
}

public void deleteLink(String data){
if(isEmpty()){
System.out.println("The list is empty.");
System.exit(0);
}
else{
Link current = firstLink;
Link previous = firstLink;
while(current != null){
if(current.getData().equals(data)){
previous = current.next;
break;
}
else{
previous = current;
current = current.next;
}
}
}
}

public void displayList(){
if(isEmpty()){
System.out.println("The list is empty");
System.exit(0);
}
else{
Link current = firstLink;
while(current != null){
current.display();
current = current.next;
}
}
}
}

最佳答案

作业

previous = current.next;

不会更改链接列表中的任何内容。

你应该做一个作业,例如:

previous.next = current.next;

这将使被删除节点之前的节点指向被删除节点之后的节点。

当然,你也不是在处理移除的节点是第一个节点的情况。这种情况应该单独处理。

public void deleteLink(String data){
if(isEmpty()){
System.out.println("The list is empty.");
System.exit(0);
}
else{
if (firstLink.getData().equals(data)) {
firstLink = firstLink.next;
} else {
Link current = firstLink.next;
Link previous = firstLink;
while(current != null){
if(current.getData().equals(data)){
previous.next = current.next;
break;
} else {
previous = current;
current = current.next;
}
}
}
}
}

关于java - `LinkedList` 的实现。删除特定的 `Link` (`Node` ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com