gpt4 book ai didi

java - 复制 LinkedQueue

转载 作者:行者123 更新时间:2023-12-01 04:48:43 26 4
gpt4 key购买 nike

我正在尝试复制原始队列并打印出队列的内容,然后再次运行副本并打印队列中的元素总数。当我在原始队列上运行 CopyQueue 方法并将其用作 ShowQueue 方法的输入时,它会更改原始队列。

public static void main(String[] args) {
LinkedUnbndQueue test = new LinkedUnbndQueue();
test.enqueue('a');
test.enqueue('b');
System.out.println( showQueue(CopyQueue(test)) );
System.out.println( Count(CopyQueue(test)) );

}

public static LinkedUnbndQueue CopyQueue(LinkedUnbndQueue orig){
LinkedUnbndQueue copy = orig;
return copy;
}

public static int Count(LinkedUnbndQueue orig){
int count = 0;
while(!orig.isEmpty() ){
orig.dequeue();
count = count + 1;
}
return count;
}

public static String showQueue(LinkedUnbndQueue orig){
String str = "";
while(!orig.isEmpty()){
str = str + orig.dequeue() + " ";
}
return str;

}

最佳答案

您的方法 CopyQueue 完全错误。您正在使用别名而不是复制队列的内容。

当你这样做时:

public static LinkedUnbndQueue CopyQueue(LinkedUnbndQueue orig){
LinkedUnbndQueue copy = orig;
return copy;
}

您将返回一个指向同一原始队列的指针。如果要复制队列,则需要复制新结构中的所有元素,例如:

public static LinkedUnbndQueue CopyQueue(LinkedUnbndQueue orig){
LinkedUnbndQueue copy = new LinkedUnbndQueue();
for(Object o : orig){
copy.add(o);
}
return copy;
}

关于java - 复制 LinkedQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com