【发布时间】:2015-07-03 14:13:21
【问题描述】:
我对 JAVA 和 OOP 还很陌生,目前我正在学习一门学术课程,学习 Java 中的数据结构和算法。
在学习链表的实现时,我遇到了一个小问题,即在实现链表时不了解如何创建节点的代码(我熟悉构造函数和一点递归)。
Node类的代码如下
public class Node {
public int info;
public Node next, prev;
public Node (int el) {
this (el,null,null);
}
public Node (int el,Node n,Node p){
info = el; next =n; prev=p;
}
}
我需要知道代码执行时幕后发生了什么(尤其是line3是如何工作的)List类的代码如下
public class List {
private Node head, tail;
public List ( ){
head = tail = null;
}
public boolean isEmpty( ){
return head == null;
}
public void addToTail (int el) {
if (!isEmpty ( )) {
tail = new Node (el, null, tail);
tail.prev.next = tail;
}
else head = tail = new Node(el);
}
public int removeFromTail ( ){
int el = tail.info;
if (head == tail)
head = tail =null;
else
{
tail = tail.prev; tail.next = null;
}
return el;
}
}
(这个例子是我正在学习的学院给出的,我想知道它是如何工作的)
请解释 Node 类 的工作原理。
【问题讨论】:
-
您有什么具体问题吗?
-
您可以使用调试器进行跟踪,并阅读“双向链表”。有很多很好的图表可以解释。
-
您发布了 List 类的完整代码吗?有一个双向链表没有什么意义,然后只有 addToTail / removeFromTail 方法。似乎没有机制让您实际遍历列表。
-
我了解链表一般如何工作的理论,但作为 java 的新手,我只是不清楚 Node 类是如何工作的(尤其是第 3 行的引用节点类)
-
@dave 不,这只是 List 类的一部分,我没有为 list 类添加整个代码以使其简短