java-如何从链表中删除节点?

use*_*049 2 java linked-list

这段代码是一个表,可以选择“惰性名称”,“删除”,“显示”和“退出”。

该代码运行良好,但我唯一的问题是如何删除节点中的所选名称

class Node{

Node in;
String name;

public Node(){

    in = null;

}

public Node(String n){

    in = null;
    name = n;

}

public void setIn(Node n){

    in = n;

}

public Node getIn(){

    return in;

}

public void setName(String n){

    name = n;

}

public String getName(){

    return name;

}




 public class Main{

public static void main(String args[]){
    Scanner scan = new Scanner(System.in);
    LinkedList bi = new LinkedList();
    while(true){

        System.out.println("Choose!\n[a] Insert Name\n[b] Delete\n[c] Show\n[d] Exit");
        char c = scan.next().charAt(0);
        System.out.println();

        if(c == 'a'){

            System.out.print("Enter Name: ");
            bi.insert(scan.next());
            System.out.println();

        }
        else if(c == 'b'){

            System.out.print("Enter Name to delete: ");
            bi.delete(scan.next());
            System.out.println();
        }
        else if(c == 'c'){

            bi.show();
            System.out.println();

        }
        else if(c == 'd'){

            System.exit(0);

        }

    }

}

  }


class LinkedList{

private Node root;

public LinkedList(){

    root = null;
}

public void insert(String n){

    root = insert(root, n);

}

private Node insert(Node n, String r){

    if(n == null){

        n = new Node(r);

    }
    else{

        n.in = insert(n.in, r);

    }

    return n;

}

public void delete(String n){

    root = delete(root, n);

}

private Node delete(Node n, String r){




}

public void show(){

    show(root);

}

private Node show(Node n){
    if(n == null){

        System.out.println("Empy list!");

    }
    else{

        while(n!=null){

            System.out.println(n.getName());
            n = n.getIn();

        }

    }

    return n;
}

 }
Run Code Online (Sandbox Code Playgroud)

*我不知道如何删除节点。我应该在删除方法上加上什么?

public void delete(String n){

    root = delete(root, n);

}

private Node delete(Node n, String r){




}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 5

我们可以为您编写代码,但是这没有意义。

相反,我建议您在纸上使用列表节点和节点字段的框以及指针/引用的箭头在纸上绘制链表数据结构。然后为算法的局部变量绘制更多框...并“手动执行”它。这将帮助您可视化代码该做什么。

完成几次此类操作后,您将可以在脑海中想象...


你能给我一个样品吗?

抱歉,但不能。您可以自己动手做以了解更多。往上看。