我正在尝试为我的家庭作业添加一个元素到循环单链表的末尾。但由于某种原因,我遇到了很多问题。
我有一个_tail
指针,并且_dummy
. JUnit 测试中的 add 方法说,当检查 add 方法时,它返回 null 而不是 1。(1 是添加到列表中的内容)
这是我的代码
private static class Node<T>{
Node<T> next;
T data;
public Node(T data, Node<T> next){
this.next = next;
this.data = data;
}
}
private Node<T> _tail;
private int _count;
private int _version;
private Node<T> _dummy;
public CyclicLinkedList(){
_dummy = new Node<T>(null, null);
_dummy.next = _dummy;
_tail = _dummy;
_count = 0;
assert _wellFormed();
}
这是我的添加方法
@Override
public boolean add(T x){
assert _wellFormed();
Node<T> n = new Node<T>(x, _tail.next);
_tail.next = n;
_tail = n;
++_version;
++_count;
assert _wellFormed();
return true;
}
assertWellformed 声明链表是错误循环的。_wellFormed() 方法已经由课堂讲师实施,所以这不是问题。需要一些指点!谢谢。这是测试,看看测试是否循环错误。
// check for cycles:
Node<T> fast = _tail.next;
for (Node<T> p = _tail; fast != null && fast.next != null && fast != _tail && fast.next != _tail; p = p.next) {
if (p == fast) return _report("list is wrongly cyclic");
fast = fast.next.next;
}