我在完成一项分配给我的任务时遇到了一些极端困难。
任务是在java中创建4种不同的数据结构,LinkedList、DoublyLinked list、deque和sorted doublelinked list。除了 sorted 中的 add 方法外,我几乎拥有所有东西。
我已经尝试了大约 4 个小时不同的事情,每次我这样做时,我得到的测试用例都会失败。
我正在发布我当前的代码,它不能按照我想要的方式工作。如果有人可以通过查看它来判断我需要修复什么,那就太棒了。我还可以将代码发布到其他方法和其他东西。谢谢!
public void add(T item) {
if (head.getData() == null) {
head = new Node(item);
tail = new Node(null);
tail.setPrev(head);
head.setNext(tail);
count++;
} else if (((Comparable<T>) head.getData()).compareTo(item) >=0) {
Node tempNode = head;
head = new Node(item);
head.setNext(tempNode);
tempNode.setPrev(head);
count++;
} else {
Node current = head.getNext();
for (int i = 1; i < size() && current.getData() != null; i++) {
if (((Comparable<T>) current.getData()).compareTo(item) > 0) {
current = current.getNext();
} else if (((Comparable<T>) current.getData()).compareTo(item) <= 0) {
Node newNode = new Node(item);
current.getPrev().setNext(newNode);
newNode.setNext(current);
newNode.setNext(current.getPrev());
current.setPrev(newNode);
count++;
break;
}
}
tail = new Node(item);
current.setNext(tail);
tail.setPrev(current);
count++;
return;
}
}
编辑一:
好的,我可以修复演员表的问题,但这对我想要完成的工作没有帮助。对于我的问题含糊不清或不清楚的部分,我深表歉意。有点难以解释。我还得到了很多测试用例,例如这个:
public void testAddAll() {
SortedDLL<Integer> list = new SortedDLL<Integer>();
assertEquals(0, list.size());
Integer[] objects = {32,0,5125,-12};
Integer[] sorted = {-12,0,32,5125};
list.addAll(objects);
assertEquals(4, list.size());
for (int i = 0; i < objects.length; i++) {
assertEquals(sorted[i], list.get(i));
}
}
当我为最后一部分执行此操作(使用 system.out.println 而不是 assertEquals)时,我得到: (-12, -12) (0, 0) (32, 5125) (5125, 0) 这不完全对。我只是不确定发生了什么。我无法发布所有尝试过的解决方案,因为我已经删除了大部分。