你好,感謝所有幫助到目前爲止,我已經完成了這個項目。在Java中需要幫助實現雙向鏈表[最終]
現在生病了解釋我的代碼和我必須實現的特殊功能。 1.我的鏈表必須以特定數量的元素開始,你會在dll的構造函數中看到這一點。2.一種將新值輸入到創建的元素中的方法。 3.我有一個get方法來獲取某個節點的值。如果用戶調用的索引值大於列表大小 ,也會創建新節點4.我還創建了一個將元素插入到特定位置的插入方法。
我的節點類看起來像這樣(對不起,小寫的類名):
public class node {
private int _value;
public node(int v){
_value = v;
}
public node(){
}
public int get(){
return _value;
}
public void set(int v){
_value = v;
}
public node next = null;
public node prev = null;
}
我的DLL類(奇怪的名字,我知道這個項目只是標題):
public class BetterArray{
private int _size;
private node _head;
private node _tail;
public BetterArray(int n){
_head = null;
_tail = null;
_size = n;
if(_head == null){
_head = new node(0);
_tail = _head;
}
for(int i = 1; i < n; i++){
node current = _head;
for(int j = 1; j < i; j++){
current = current.next;
}
node newNode = current.next;
current.next = new node(0);
current.next.next = newNode;
current.next.prev = current;
_tail = current.next;
}
}
public BetterArray(){
}
public int get(int index){
int value = 0;
node temp = _head;
if(index < _size){
for(int loc = 0; loc < index; loc++){
temp = temp.next;
}
value = temp.get();
}
else{
for(int i = _size; i <= index; i++){
node current = temp;
for(int j = _size; j < i; j++){
current = current.next;
}
node newNode = current.next;
current.next = new node(0);
_size++;
current.next.next = newNode;
current.next.prev = current;
_tail = current.next;
}
}
return value;
}
public void put(int value, int index){
node temp = _head;
if(index < _size){
for(int loc = 0; loc < index; loc++){
temp = temp.next;
}
temp.set(value);
}
else{
for(int i = _size; i < index; i++){
node current = temp;
for(int j = _size; j < i; j++){
current = current.next;
}
node newNode = current.next;
current.next = new node(value);
_size++;
current.next.next = newNode;
current.next.prev = current;
_tail = current.next;
}
}
}
public void insert(int value,int index){
node current = _head;
for(int loc = 0; loc < index - 1; loc++){
current = current.next;
}
node temp = current.next;
current.next = new node(value);
_size++;
current.next.next = temp;
current.next.prev = current;
_tail = current.next;
}
}
public void delete(int index){
node pre = _head;
for(int loc = 0; loc < index; loc++){
pre = pre.next;
}
node current = pre.next;
pre.next = current.next;
_size--;
}
public int getSize(){
return _size;
}
創建一個沒有值的N個元素的鏈表是沒有意義的。我的建議是,你不這樣做。如果你必須,只需要調用'add(null)'N次,因爲你必須實現'add()'。 – Andreas
@andreas我相信這是插入方法的目的或者是我的邏輯在這裏是錯誤的 –
請注意,它更清楚如果你也有類名'節點'開始大寫,因此'節點'。插入方法是用值創建一個新節點。 – martijnn2008