【问题标题】:How I can add a point in front of first element in linked list java?如何在链表java中的第一个元素前面添加一个点?
【发布时间】:2019-05-24 09:46:32
【问题描述】:

我正在尝试编写一个名为 addStart() 的函数来在列表结构的第一个节点的前面添加新元素。请帮我弄清楚。

我有 2 个名为 Waypoint 的类和 TourElement 类。 Waypoint 提供了使用点的方法。一个 Tour Element 包含很多点。

//Waypoint.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;
    }

//Tour Element.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;
 }

//我需要关于 addStart 函数的帮助 //,它在第一个元素前面添加路点。如果参数为空,则返回列表不变。

TourElement addStart(Waypoint wp) {
        if(this.next == null)
        {
            TourElement newTourElement = new TourElement();
            newTourElement.setWaypoint(wp);
            this.next = newTourElement; 
        }
        return this;
    }

//addStart的测试用例:

public void test0AddStart() {
        TourElement elem = new TourElement();
        elem.setWaypoint(createWaypoint(2, 2));  

        elem = elem.addStart(createWaypoint(1, 1));
        assertArrayEquals(new int[] {1, 1}, elem.getWaypoint().toArray());
        assertArrayEquals(new int[] {2, 2}, elem.getNext().getWaypoint().toArray());
        assertNull(elem.getNext().getNext());
    }

我的输入是一个节点列表,例如:{1,2} -> {2,3} -> {3,4} 和一个航点 {5,6}。我希望我的输出是:{5,6 } -> {1,2} -> {2,3} -> {3,4}

【问题讨论】:

    标签: java list linked-list structure


    【解决方案1】:

    您可以使用addFirst(Object element) 在第一个索引处插入元素,例如:

        import java.io.*; 
        import java.util.LinkedList; 
    
        public class LinkedListDemo { 
           public static void main(String args[]) { 
    
            // creating an empty LinkedList 
            LinkedList<String> list = new LinkedList<String>(); 
    
            // use add() method to add elements in the list 
            list.add("Coder"); 
            list.add("ACJHP"); 
            list.add("1190"); 
    
            // Output the present list 
            System.out.println("The list is:" + list); 
    
            // Adding new elements at the beginning 
            list.addFirst("First"); 
            list.addFirst("At"); 
    
            // Displaying the new list 
            System.out.println("The new List is:" + list); 
        } 
    } 
    

    因此,如果您仔细阅读documentation,您会看到很多让您的工作变得轻松的方法

    【讨论】:

    • 但我无权使用这样的方法。我自己写了一个方法。
    • 您的 TourElement 类应该包含航点数组而不是单个对象,因此当您尝试将其添加为第一个元素时,您可以重新创建数组并根据需要重新排序元素
    • 你明白我想说的了吗?在您的addStart()method 中,您只需更改下一个元素,但这是您的问题,您应该在列表中插入新元素
    • 不,我的作业要求 TourElement 必须是一个对象。它用于创建链表中的每个元素。在测试用例中,我有一个元素 elem.setWaypoint(createWaypoint(1, 2));当我使用 elem = elem.addStart(createWaypoint(1, 1));我希望在链接列表中它将是 {1,1} -> {2,2}
    猜你喜欢
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 2020-09-11
    • 2021-01-07
    • 2019-05-06
    相关资源
    最近更新 更多