首页 > 解决方案 > 显示链表的第一个节点

问题描述

我能够获得链表的第一个值,但它只适用于这种情况。如何使 getFirst() 能够对存储在链表中的任意数量的值起作用?

该程序输出:First Number is --> 1

public class LinkedListFirst 
{
 public static void main(String[] args)
   {
      MyLinkedList list = new MyLinkedList();
      list.addFirst(1);
      list.addFirst(2);
      list.addFirst(3);
      list.getFirst();
   }
}

class MyLinkedList
{
private class Node            // inner class
{
  private Node link;
  private int x;
}
//----------------------------------
private Node first = null;    // initial value is null
//----------------------------------
public void addFirst(int d)
{
  Node newNode = new Node(); // create new node
  newNode.x = d;             // init data field in new node
  newNode.link = first;      // new node points to first node
  first = newNode;           // first now points to new node
}
//----------------------------------
 public void getFirst()
 {
   System.out.println( "First Number is --> " + first.link.link.x);
 }
}

标签: javanodes

解决方案


根据您上面的评论,我认为您实际上是在列表中的最后一项之后。

考虑这种方法:

public void getLast()
{
    Node current = first;
    while(current.link != null){
        current = current.link;
    }
    System.out.println("First number is ---> " + current.x);
}

你的一些困惑可能是因为你使用“第一”这个词太松散了。是的,您确实首先添加了数字 1 但是由于您将项目添加到列表的开头,它现在是列表的最后一项。

我希望这会有所帮助。


推荐阅读