我正在学习链表,并编写了示例代码以了解基本原理。我的代码可以运行,但是还有另一种使用for循环而不使用while循环打印列表的方法吗?

我使用了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的方式。

除了将初始化和增量移到for表达式(使表达式更紧凑)之外,它基本上与while循环相同。

10-06 15:48