[英]Circular Doubly Linked List
我需要Java中的雙向雙重鏈接列表的幫助。
這是我的代碼(最初由“ sanfoundry”編碼;它使用接口):
LinkedList.java:
public class LinkedList<T extends Comparable<T>> implements
ILinkedList<T> {
private ILinkedListNode<T> head;
private ILinkedListNode<T> end;
private int size;
public LinkedList() {
head = null;
end = null;
head = null;
size = 0;
}
@Override
public void append(T element) {
ILinkedListNode<T> tempNode = new LinkedListNode(element, null, null);
if (head == null) {
head = tempNode;
end = head;
} else {
tempNode.setPrev(end);
tempNode.setNext(tempNode);
end = tempNode;
}
size++;
}
// should return element at position "index"
@Override
public T get(int index) {
return null;
}
@Override
public int size() {
return size;
}
@Override
public ILinkedListNode<T> getHead() {
return head;
}
}
現在,我需要幫助才能使其正常運行。 我做錯了什么嗎?我必須在方法“ public T get(int index)”中編寫什么代碼? 抱歉,但我是Java新手:(
編輯:這是可能的解決方案嗎?
公共T get(int索引){
T element = null;
if (index == 0) {
element = head.getElement();
} else if (index == size()-1) {
element = head.getPrev().getElement(); // end.getElement() also possible
} else {
ILinkedListNode<T> temp = head;
for (int i = 0; i < index; i++) {
temp = temp.getNext();
}
element = temp.getElement();
}
return element;
}
嘗試做一些測試用例。 理想情況下,您將要使用真實的測試框架,但使用常規的main方法可能會起作用。 例如:
public static void main(String[] args) {
ILinkedList<String> a = new LinkedList<String>();
System.out.println(a.size()); // 0
System.out.println(a.getHead()); // null
a.append("foo");
System.out.println(a.size()); // 1
System.out.println(a.get(0)); // "foo"
System.out.println(a.get(1)); // decide yourself what this should result in
a.append("bar");
System.out.println(a.size()); // 2
System.out.println(a.get(0)); // "foo"
System.out.println(a.get(1)); // "bar"
a.append("baz");
System.out.println(a.size()); // 3
System.out.println(a.get(0)); // "foo"
System.out.println(a.get(1)); // "bar"
System.out.println(a.get(2)); // "baz"
}
根據需要擴展測試。 看看代碼是否返回了您期望的結果,或者代碼是否永不返回,或引發異常等。...畢竟,檢查代碼是否正確運行的最簡單方法是實際運行它。
提示:撰寫本文時,該代碼存在一些錯誤。
另外,如果代碼可以按預期運行,請考慮:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.