1

堆栈实现。我们如何在 Node 类中创建“Node”类型字段?“节点”类型的变量“第一个”如何包含“节点”类型的字段?谢谢你的帮助

public class Stack 
{
private Node first = null;

private class Node
{
    String item;
    Node next;
}

public boolean isEmpty()
{
    return first == null;
}

public void push(String item)
{
    Node oldFirst = first;
    first = new Node();
    first.item = item;
    first.next = oldFirst;  
}

public String pop()
{
    String item = first.item;
    first = first.next;
    return item;
}

}

4

2 回答 2

1

Java 通过引用(或指针)处理对象。

class Node {
     String value;
     Node next;
}

给定这个类的一个实例,它的主体需要 8 字节内存(在 32 位机器上)。前 4 个字节存储一个指向字符串的指针,接下来的 4 个字节指向另一个Node对象(或 null)。

于 2012-10-05T12:31:54.533 回答
1

Node是一种递归数据结构。想象一下,你有一个清单。一个列表可以是空的,也可以有一个第一个元素和一个剩余部分,其中剩余部分也是一个列表。

在您的Stack班级中,您拥有第一个Node实例的参考。这个第一个实例由一个字符串值和对下一个Node实例的引用组成。一开始很难理解一个类可以有同一个类的一个字段。但这是一个基本原则。即你有一个类人。一个 Person 实例可以关联到其他 Person 实例。喜欢father。然后很自然地father在类 Person 中包含一个字段。类型father是人。这不是魔法。这只是对类实例之间的关联进行建模的方法。这里唯一特别的是,这些是同一个类之间的关联,而不是两个不同类之间的关联。

于 2012-10-05T13:33:07.500 回答