我一直有一些極端的困難與我已經給予的任務。Java排序雙向鏈接列表添加方法
該任務是在java中創建4個不同的數據結構LinkedList,DoublyLinked list,deque和排序的雙向鏈表。除了排序方法中的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) 這是不完全正確的。 我只是不確定發生了什麼事。我無法發佈所有我嘗試過的解決方案,因爲我已經刪除了其中的大部分。
爲了讓我們能夠幫助您,您需要告訴我們您嘗試了什麼,以及哪些方式不符合您的要求。見http://stackoverflow.com/questions/how-to-ask –
你看到你沒有預料到什麼行爲?只是傾銷一些代碼不是很有幫助。什麼是不正確的工作? – Gian
這不是問題,但要避免演員陣容,您必須聲明>代替 –
Aubin