这段代码是一个表,可以选择“惰性名称”,“删除”,“显示”和“退出”。
该代码运行良好,但我唯一的问题是如何删除节点中的所选名称
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)
我们可以为您编写代码,但是这没有意义。
相反,我建议您在纸上使用列表节点和节点字段的框以及指针/引用的箭头在纸上绘制链表数据结构。然后为算法的局部变量绘制更多框...并“手动执行”它。这将帮助您可视化代码应该做什么。
完成几次此类操作后,您将可以在脑海中想象...
你能给我一个样品吗?
抱歉,但不能。您可以自己动手做以了解更多。往上看。
| 归档时间: |
|
| 查看次数: |
20817 次 |
| 最近记录: |