java - 为链接列表创建 getLast 方法

标签 java data-structures linked-list

我正在尝试用 Java 手动编写 getLast 方法。我知道我必须做什么,只是在编码方面遇到了麻烦。我需要做的是遍历链表,直到 p.link 指向 null,然后我可以添加到列表的末尾。这是我到目前为止所拥有的:

class MyLinkedList 
{
   private class Node           
   {
      private Node link;
      private int x;
   }
   //----------------------------------
   private Node first = null;    
   //----------------------------------
   public void addFirst(int d)
   {
      Node newNode = new Node(); 
      newNode.x = d;            
      newNode.link = first;      
      first = newNode;           
   } 

   public void addLast(int q)
   {
      Node newNode = new Node();
      newNode.x = q;
      newNode.link = null;  //points to null because nothing should follow it
   //----------------------------------
   public void traverse()
   {
      Node p = first;
      while (p != null)            
      {
         System.out.println(p.x);  
         p = p.link;               
      }
   }
}
//==============================================
class C15h1  
{
   public static void main(String[] args)
   {
      MyLinkedList list = new MyLinkedList();
      list.addLast(4);
      list.addLast(5);
     list.addLast(6);
      list.addFirst(1);
      list.addFirst(2);
      list.addFirst(3);
      System.out.println("Numbers on list");
      list.traverse();
   }
}

最佳答案

我会跟踪最后一个节点:

class MyLinkedList 
{
   private class Node           
   {
        private Node link;
        private int x;
   }
    //----------------------------------
    private Node first = null;    
    private Node last = null;    
    //----------------------------------

    public void addFirst(int d)
    {
        Node newNode = new Node(); 
        newNode.x = d;            
        newNode.link = first;      
        first = newNode;
        if(last == null)
            last = newNode;           
    } 

    public void addLast(int q)
    {
        Node newNode = new Node();
        newNode.x = q;
        newNode.link = null;  //points to null because nothing should follow it
        if(last != null)
            last.link = newNode;
        last = newNode;
        if(first == null) // This is the first node
            first = newNode;
    }

    //----------------------------------
    public void traverse()
    {
        Node p = first;
        while (p != null)            
        {
            System.out.println(p.x);  
            p = p.link;               
        }
    }

    public int getLast()
    {
        if(last != null)
            return last.q;
        return -1;
    }
}

关于java - 为链接列表创建 getLast 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325457/

相关文章:

java - 为什么这个简单的java代码不能编译?

c++ - 通用二叉树节点析构函数问题

java - 有没有办法遍历变量名?

python - 如何压缩这个字符串压缩代码以使其更加高效?

c - C 中的函数数组

c - 用 C 语言编写一个程序,使用 rand() 函数创建 1000 个结构体

c - 在C中删除整个链表,出错了

java - Java的LinkedList中getFirst()和peekFirst()有什么区别?

java - 在扩展类上声明proporder

java - 显示不同表格内容的方法,重复标题问题