gpt4 book ai didi

java - 我如何从java中给定索引的链表中获取元素?

转载 作者:行者123 更新时间:2023-11-30 10:03:22 26 4
gpt4 key购买 nike

我正在学习 Java 中的链接列表。我想写一个方法来根据给定的索引给出节点的值

我写了一个函数,但它没有通过一些测试用例,我不知道为什么?。我的逻辑有什么问题?

//航路点.java

public class Waypoint {
int x ;
int y ;
public int getX()
{
return this.x;
}
public int getY()
{
return this.y;
}
public void setXY(int x, int y)
{
this.x = x;
this.y = y;
}

//旅游元素.java

public class TourElement {
private Waypoint points;
private TourElement next;
public void setWaypoint( Waypoint points)
{
this.points = points;
}
public void setTourElement(TourElement next)
{
this.next = next;
}
Waypoint getWaypoint()
{
return this.points;
}

TourElement getNext()
{
return this.next;
}

int getNoOfWaypoints()// return the number of waypoints in the list
{
int count = 1;
TourElement current = getNext();
while(current.next != null)
{
count++;
current = current.next;
System.out.println(count);
}
return count;
}

//这是我正在使用的方法:

Waypoint getWaypointAt(int index)
{
int totalElement = getNoOfWaypoints();
int count = 0;
TourElement current = getNext();
if(index < totalElement && index >= 0)
{
while (current.next != null)
{
if(count == index)
{
return getWaypoint();
}
count++;
current = current.next;
}

}
return null;
}

//测试用例://情况1:通过

public void test0GetWaypointAt_First() {
TourElement elem = createElementList(new int[][] {{0, 0}, {1, 1}, {2, 2}});
Waypoint expected = createWaypoint(0, 0);
assertArrayEquals(expected.toArray(), elem.getWaypointAt(0).toArray());
}

//案例2和案例3:失败

public void test0GetWaypointAt_Snd() {
TourElement elem = createElementList(new int[][] {{0, 0}, {1, 1}, {2, 2}});
Waypoint expected = createWaypoint(1, 1);
assertArrayEquals(expected.toArray(), elem.getWaypointAt(1).toArray());
}

@Test
public void test0GetWaypointAt_Last() {
TourElement elem = createElementList(new int[][] {{0, 0}, {1, 1}, {2, 2}});
Waypoint expected = createWaypoint(2, 2);
assertArrayEquals(expected.toArray(), elem.getWaypointAt(2).toArray());
}

我不知道原因。请帮我。非常感谢你提前

最佳答案

你用列表构建的结构似乎没问题,关于你的方法 getWaypointAt 我至少看到两个问题:

第一个问题

   TourElement current = getNext();

getNext() 已经是列表中的下一个元素,因此您一直在跳过第一个元素。应该是

   TourElement current = this;

第二个问题

    return getWaypoint();

它始终从头部返回航路点。应该是

    return current.getWaypoint();

看来您的第一个测试也应该失败。我没有看到您在 createElementList 中构建元素的方式,这可能是它通过的原因。

关于java - 我如何从java中给定索引的链表中获取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56344563/

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