こんにちは、皆さん、これまでのおかげで、このプロジェクトはかなり完成しました。Javaで二重リンクリストを実装するのに手助けが必要です。[最終]
ここで私のコードと私が実装しなければならなかった特別な機能について説明します。 1.私のリンクリストは、特定の量の要素から始めなければなりません。これはDLLコンストラクタ にあります。2.作成された要素に新しい値を入力するメソッド。 3.特定のノードで値を取得するgetメソッドがあります。ユーザーがリストのサイズより大きいインデックス値を呼び出す場合は、新しいノードも作成されます。 4.要素を特定の場所に挿入するinsertメソッドも作成しました。
マイノードクラスは、(小文字のクラス名を気の毒に)次のようになります。
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()'を実装する必要があるので、 'add(null)'をN回呼び出すだけです。 – Andreas
@andreas私はこれが挿入メソッドのためのものだと信じていますか、ここで間違っています –
クラス名が 'node'から始まり、' Node'から始まるクラス名があれば明確です。挿入メソッドは、値を持つ新しいノードを作成することです。 – martijnn2008