【问题标题】:Removing Node in dual data LinkedList, Java [duplicate]删除双数据LinkedList中的节点,Java [重复]
【发布时间】:2022-01-20 20:14:11
【问题描述】:

我正在尝试删除链接列表中的一个节点。我重写了它,因为我想在使用链表时包含优先级队列效果。 remove(String name) 方法应该检查三种情况,如果根为空,如果根是源,或者是否有根但它不为空。如果是最后一个,它将继续通过带有while(temp.next!=null) 的LL 并检查下一个节点名称值是否是请求名称。从我的思考过程来看,它应该有效。但是,它显然不起作用,因为它不会删除任何东西。我在下面附加了删除方法和节点类。根节点的名字是root。

public void remove(String name) {
    Node temp = root;

    if(root==null){

    }
    else if (root.Name==name){
        root=root.next;
    }
    else{
        while (temp.next!=null) {
            if(temp.next.Name == name){
                if(temp.next.next!=null){
                    Node saver = temp.next.next;
                    temp.next = saver;
                }
                else{
                    temp.next = null;
                }
                break;
            }

            temp=temp.next;
        }
    }
}
public class Node {

    String Name;
    Integer pri;
    Node next;

    public Node(int pri, String Name) {
        this.pri = pri;
        this.Name = Name;
    }
}

【问题讨论】:

  • 我应该声明,目标在根、中间或末端的期望都不会导致相同的不移除结果
  • @TimMoore 谢谢,今天早上我一定把脑子忘在床边了。

标签: java linked-list nodes


【解决方案1】:

当您比较 String 值时,请记住与 String.equals() 方法进行比较。

  • 当您使用== 运算符比较字符串时,它会检查两个对象是否指向相同的内存位置
  • 当您使用 String.equals() 时,它实际上会比较两个对象所持有的值。

修改后的代码如下所示:

private void remove(String s) {

    if(head != null) {
        if(head.name.equals(s)) {
            head = head.next;
        }else {
            Node tempHead = head;
            while(tempHead.next != null) {
                if(tempHead.next.name.equals(s)) {
                    if(tempHead.next.next != null) {
                        Node temp = tempHead.next.next;
                        tempHead.next = temp;
                    }else {
                        tempHead.next = null;
                    }
                    return;
                }
                tempHead = tempHead.next;
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多