注意:這看起來像一個家庭作業,否則將不需要重新發明輪子。知道這一點,我不會提供具體的代碼,只是僞代碼(除了像class
,int
等類似的關鍵字),沒有有用的方法,如getters或setter,沒有額外的字段等。這將是你的工作,以生成所有必要的Java代碼,使其工作。
我不知道從哪裏開始,我是新來的鏈表
開始通過定義會在列表裏面的元素的結構。這個怎麼做?檢查的要求(emphasys礦):
構建數據結構在Java中與內部列表是由的單鏈接列表是包含整數
你需要一個數據起初可以容納一個整數值並表現爲單鏈表的結構。從the definition of singly linked list,該結構包含兩個元素:
- 整數數據保持
- 的指針到下一個類似的數據結構。
這可以這樣解決:
class DataStructure {
int data;
DataStructure next;
}
現在,你有一個支持單向鏈表的結構,你需要一個新的結構,這將是的單向鏈表和定義它的行爲。這可以作爲你的要求說來解決:
內部列表必須被實現爲單鏈表與虛擬頭和尾指針
移動到這個僞代碼:
class SinglyLinkedList {
DataStructure head;
DataStructure tail;
}
就是這樣。現在你有了你的SinglyLinkedList
,你只需要定義行爲。同樣,審查要求:
它需要有功能的方法內部類可以合併,分裂,並給大小內列出的。
從這裏,我們可以定義爲SinglyLinkedList
數據結構中至少有三種方法:merge
,split
和size
。從它適應最新的類:
class SinglyLinkedList {
DataStructure head;
DataStructure tail;
//added this method just to know you need to add data to your singly linked list
public void add(int data) {
}
//you merge a list with another list
public void merge(SinglyLinkedList singlyLinkedList) {
}
//you split the list into two or more lists
public SinglyLinkedList[] split() {
}
//the size of the list is a numeric positive value
public int size() {
}
}
EDIT(根據您的修改,並通過看圖片)
有需要界定持有單鏈表的列表中的其他數據結構。通過要求:
對於頂級名單,我必須使用通用LinkedList類從Java集合API。
然後,你只需要使用一個LinkedList
將包含單鏈表一個新的結構:
class SinglyLinkedListHolder {
LinkedList<SinglyLinkedList> holder;
public SinglyLinkedListHolder() {
holder <- new LinkedList<SinglyLinkedList>();
}
//this holder should at least add new singlyLinkedList in the bigger list
public void add(SinglyLinkedList singlyLinkedList) {
}
}
注:我注意到,你試圖使用泛型定義你的結構:
private static class Node<T> {
}
我強烈建議你不這樣做直到你真正掌握了單鏈表如何工作的主要概念。這可能需要一些時間,但最好一步一步來。使這個結構工作後,那麼你可以很容易地(事實上,這取決於你的實現)替換結構:
class DataStructure<T> {
T data;
DataStructure next;
}
任何代碼這麼遠? –
不是因爲我不知道從哪裏開始,我是鏈接列表的新手。 –