我想通过给定的键从链表中删除一个节点。链接列表包含以下类型的数据
List nd = new List ();
nd.insertdata(" Himasha ");
nd.insertdata(" Chiara ");
nd.insertdata(" Angel ");
nd.insertdata(" Niana ");
nd.insertdata(" Romeli ");
这是我创建的通过给定键删除节点的方法。但问题是它总是删除唯一的Value;Chiara";
public void Deleteobj (String name ) {
Nodo n = Head ;
while(n. equals(name) ){
n= n.next ;
}
Nodo n1 = n.next ; //n1 equals the delete node
n.next = n1.next ;
System.out.println("The cancellation value is : "+ n1.data);
}
输出
插入要删除的密钥//我的输入:Niana
取消值为:Chiara
这就是问题所在,尽管我想删除";Niana"总是它删除键";Chiara";
只取第二个值,条件n.equals(name)
将始终为false
,原因有多种:首先,Nodo
和String
是完全不同的类型,因此它们不太可能相等。此外,即使你以某种方式成功地实现了这一点,这也没有意义,为什么你要做一个循环,检查所有与你想要的节点相等的节点,然后跳过它们?
所以这就是你得到输出的原因。循环在第一次运行时中断,因此您的n
就是head
。你把n1作为n
的next
,这是第二项,这就是你打印出来的。
此外,它还与java代码的命名约定相矛盾。
还有更多的问题,但你应该先解决这个问题。