我遇到了一个问题,如何知道链接列表中删除了哪个节点。 例如:有一个链表,其中包含多个节点,链表传递给a 将删除一个仲裁节点并返回列表的函数..有没有办法得到 知道哪个节点被删除了。
根据我的观点,在传递链表之前,我们需要保留一个能够控制所有内容的数组 列表中每个节点的地址,删除后我们需要遍历并找出哪个节点被删除。
最好的方法是什么。
例如:
public class GetDeletedNode{
public static void main(String args[]){
LinkedList<String> ll = new LinkedList<String>();
ll.add("a");
ll.add("b");
ll.add("c");
ll.add("d");
ll = deleteArbitaryNode(ll);
//write code to get know which node got deleted.
//
//code goes here
for(String str:ll){
System.out.println(str);
}
}
private static LinkedList<String> deleteArbitaryNode(LinkedList<String> ll) {
//delete arbitary node
Random random = new Random();
ll.remove((int)((long)3*random.nextDouble()+1));
return ll;
}
}
答案 0 :(得分:0)
对'public E remove(int index)'的调用提供了删除的对象。
所以......像这样替换你的代码并将删除的节点返回给调用者:
public class GetDeletedNode{
public static void main(String args[]){
LinkedList<String> ll = new LinkedList<String>();
ll.add("a");
ll.add("b");
ll.add("c");
ll.add("d");
// removes the random node and then returns it
String removeObject = deleteArbitaryNode(ll);
for(String str:ll){
System.out.println(str);
}
}
private static T deleteArbitaryNode(LinkedList<T> ll) {
//delete arbitary node
Random random = new Random();
return ll.remove((int)((long)3*random.nextDouble()+1));
}
}
您可能还想将随机节点选择器重新使用到List ans中使用size()的内容,然后它可以与任何大小的列表一起使用。