java - 显示链表的第一个节点
问题描述
我能够获得链表的第一个值,但它只适用于这种情况。如何使 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);
}
}
解决方案
根据您上面的评论,我认为您实际上是在列表中的最后一项之后。
考虑这种方法:
public void getLast()
{
Node current = first;
while(current.link != null){
current = current.link;
}
System.out.println("First number is ---> " + current.x);
}
你的一些困惑可能是因为你使用“第一”这个词太松散了。是的,您确实首先添加了数字 1 ,但是由于您将项目添加到列表的开头,它现在是列表的最后一项。
我希望这会有所帮助。
推荐阅读
- c++ - C++ 枚举类作为可变模板参数
- sql - 如何使用 DML 命令从两个不同的表中更新表中的列
- c++ - 错误:我的班级的“操作员>>”不匹配
- vb.net - 从文本中读取文件并创建循环
- tensorflow - 如何使用 TensorFlow 2 自定义 CNN 层,在 CNN 的密集层提供新输入
- javascript - 未捕获的类型错误:无法读取创建的 VueJ 中未定义的属性“0”
- php - 用户提交收据后删除购物车中的项目
- python - Python通过循环登录不同的帐户
- symfony - Symfony“fos_rest.request_body”转换器:不要反序列化嵌套的 DTO 类
- javascript - addEventListener 加载在 Firefox 上触发两次