Hallo ich habe ein kleines Verständnisproblem. Wie Titel schon sagt geht es um eine verkettete Liste. Ich habe die Suchfunktion benutzt, aber nichts gefunden was mir hilft zu verstehen. Ich soll eine Funktion schreiben, die einen Wert übergeben kommt und wenn dieser Wert bereits in der Liste ist diesen löscht, ist er nicht in der Liste soll er vorne angefügt werden. Letztereshabe ich bereit hinbekommen, nur mit dem löschen komme ich nicht klar, da ich nicht verstehe wie ich zu einer bestimmtenStelle laufe und dann dort lösche. Wenn mir jemand helfen könnte wäre ich dankbar.
Es geht um den teil change für if(isInList(i)) von void changeund was da gerade drinn steht ist blödsinn.
Code:
class Element {
int value;
Element next;
public Element getNext() {
return next;
}
Element(int v, Element n) {
this.value = v;
this.next = n;
}
public int getValue() {
return value;
}
boolean isElem(int v){
Element hilf = this.next;
while (hilf != null){
if (hilf.value == v) return true;
hilf = hilf.next;
}return false;
}
}
class List {
Element first, last;
List() {
this.first = null;
this.last = null;
}
void append(int i) { // Anhaengen am Ende
Element elem = new Element(i, null);
if(!isInList(i)){
if (this.first == null) {
this.first = elem;
this.last = elem;
} else {
this.last.next = elem;
this.last = elem;
}}
}
boolean isInList(int v){
Element hilf = this.last;
while (hilf != null){
if (hilf.value == v) return true;
hilf = hilf.next;
}return false;
}
void change(int i){
if(!isInList(i)){
Element elem = new Element(i, first.getNext());
Element backUp = new Element(this.first.value, first.getNext());
this.first = elem;
this.first.next = backUp;
}
if (isInList(i)){
Element elem = this.last;
while (elem != null){
if ( elem.value == i){
this.first = this.first.next;
this.first.next = elem;
}
}
}
}
}
public class Aufgabe3 {
public static void main(String[] args) {
List list = new List();
list.append(4);
list.append(3);
list.append(5);
list.append(7);
list.change(3);
System.out.print(list.first.getValue());
System.out.print(list.first.next.getValue());
System.out.print(list.first.next.next.getValue());
System.out.print(list.last.getValue());
}
}
Es geht um den teil change für if(isInList(i)) von void changeund was da gerade drinn steht ist blödsinn.