【发布时间】:2014-12-12 19:02:04
【问题描述】:
我有以下家庭作业:
为类
IntSLList添加一个新方法retrieveAt,它将整数索引位置作为参数。该方法返回索引位置处节点内的信息。第一个节点的索引为0。如果列表为空或索引无效,则显示错误信息。
我已经使用以下代码实现了一个解决方案:
public int retrieveAt(int pos){
IntSLLNode tmp;
int count = 0;
int c;
for(tmp = head; tmp != null; tmp = tmp.next){
count++;
}
if(isEmpty()|| count<pos){
return 0;
} else {
IntSLLNode tmp1 = head;
for(int i = 1; i < pos; i++){
if(tmp1.next == null)
return 0;
tmp1 = tmp1.next;
}
return tmp1.info;
}
}
它似乎正确地遍历了列表,但它没有检索到正确的元素。
这似乎没有给出正确输出的示例:
IntSLList myn = new IntSLList();
myn.addToHead(10);
myn.addToHead(20);
myn.addToHead(30);
myn.addToHead(40);
myn.addToTail(60);
myn.printAll();
int x = myn.retrieveAt(4);
if(x == 0)
System.out.println("NOT VALID ");
else
System.out.println("elm : " + x);
输出是:
40
30
20
10
60
elm : 10
【问题讨论】:
-
请在第二个 for 循环中设置 i=0 而不是 i=1。
标签: java