Hallo Leute Danke für die Hilfe bis jetzt Ich habe dieses Projekt ziemlich abgeschlossen.Brauchen Sie Hilfe bei der Implementierung einer Doubly Linked List in Java [Final]
Jetzt erkläre ich meinen Code und die Besonderheiten, die ich implementieren musste. 1. Meine verkettete Liste muss mit einer bestimmten Anzahl von Elementen beginnen, Sie sehen dies im DLL-Konstruktor 2. eine Methode, die neue Werte in die erstellten Elemente eingibt. 3. Ich habe eine Methode get, um den Wert an einem bestimmten Knoten zu erhalten. Dies erzeugt auch neue Knoten, wenn der Benutzer einen Indexwert aufruft, der größer als die Listengröße ist. 4. Ich habe auch eine Einfügemethode erstellt, die ein Element an einer bestimmten Stelle einfügt.
Meine Knotenklasse sieht wie folgt aus (sorry für die Kleinklassenname):
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;
}
Meine DLL-Klasse (ungerade Name ich weiß, nur den Titel des Projekts):
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;
}
Erstellen einer verknüpften Liste mit N Elementen ohne Werte macht keinen Sinn. Meine Empfehlung ist, dass Sie das nicht tun.Wenn Sie müssen, rufen Sie einfach 'add (null)' N mal, da Sie 'add()' trotzdem implementieren müssen. – Andreas
@andreas ich glaube, das ist, was die Insert-Methode ist oder ist meine Logik hier falsch –
Bitte beachten Sie, dass es klarer ist, wenn Sie auch den Klassennamen 'node' haben mit einem Großbuchstaben, also' Node'. Die Einfügemethode dient zum Erstellen eines neuen Knotens mit einem Wert. – martijnn2008