java - 在java中使用for循环打印链表

标签 java linked-list

我正在学习链表并编写示例代码来了解基础知识。我的代码有效,但是有没有另一种方法可以使用没有 while 循环的 for 循环来打印列表?

我使用自己制作的 for 循环作弊,因为我已经知道列表中的节点数。是否有使用 for 循环打印列表的不同方法?

public class FriendNode {
FriendNode next;
String name;

FriendNode(String name)
{
    this.name = name;
    this.next = null;
}

public FriendNode(String name, FriendNode n)
{
    this.name = name;
    this.next = n;
}
public FriendNode getNext()
{
    return this.next;
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    FriendNode g = new FriendNode("Bob");
    FriendNode o = new FriendNode("Alice");
    FriendNode k = new FriendNode("Tom");
    FriendNode m = new FriendNode("Day");
    g.next = o;
    o.next = k;
    k.next = m;
    m.next = null;
    FriendNode current=g;
    while(current!=null)
    {
        System.out.println(current);
        current = current.next;
    }
    for(int i =0; i<4;i++)
    {
        System.out.println(current);
        current = current.next;
    }
}
}

最佳答案

你可以这样做:

for (FriendNode current=g; current != null; current = current.next) {
    System.out.println(current);
}

这是假设 g 是第一个节点,因为这是您在使用 while 循环打印列表时初始化 current 的方式。

本质上和 while 循环是一样的,除了初始化和递增被移到 for 表达式中,这使得它更紧凑。

关于java - 在java中使用for循环打印链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624087/

相关文章:

java - 为什么%运算符在C/C++中不能用于 float ,但在Java和C#中可以使用?

Java:沿圆形路径移动标签

c - [C] : When a pointer to a pointer to a struct is passed in a function, 为什么它不能更改该结构的元素?

c - 链表: Moving a node from one list to another

c++ - c++ if语句中的多个条件(通过链表的堆栈实现)

C++:在链表中查找类的最大值

java - 模拟在 Java 中按住的键

java - spring security - expiredUrl 不工作

java - 扫描仪跳过我的输入机会

java - 为什么我的链表显示函数总是打印最后一个元素?