2012-10-05 25 views
1

堆栈实现。 我们如何在Node类中创建一个“Node”类型的fild? “Node”类型的变量“first”如何包含“Node”类型的fild? 谢谢大家帮忙我们如何在Node类中创建一个“Node”类型的fild?

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; 
} 

}

+1

这完全不清楚为什么你认为这*不起作用。我怀疑你应该让'Node'成为一个静态嵌套类... –

+0

我不明白这个问题。如何 - 你在那里有代码,对吧? – eis

+0

该代码的作品,但我没有得到的原则 –

回答

1

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

class Node { 
    String value; 
    Node next; 
} 

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

1

Node是递归数据结构。想象一下,你有一个列表。列表可以是空的,或者有第一个元素和一个休息,其余的也是一个列表。

在您的Stack类中,您持有第一个Node实例的参考。这个第一个实例由一个String值和一个对下一个Node实例的引用组成。首先,不容易理解一个班级可以拥有同一班级的班级。但这是一个基本的原则。即你有一个班人。 One Person实例可以与其他Person实例关联。像father。那么在Person类中包含字段father是很自然的。 father的类型是Person。这不是魔术。这只是模拟类实例之间关联的方式。这里唯一特别的是,这些是同一个班级之间的联系,而不是两个不同班级之间的联系。

相关问题