Listen

Diskutiere Listen im Java Basics - Anfänger-Themen Bereich.
T

thecain

Ein Foto vom Bildschirm? Ernsthaft? Kopier doch einfach den Code hier rein. (In Code Tags)
 
S

Sandro95

Java:
public class Link {
  
    public int wert ;
    public Link nächster;
  
    public Link(int wert , Link nächster) {
        this.wert=wert;
        this.nächster=nächster;
    }

}



public class Liste {

    public Link anfang;
    public Link ende;

    public Liste(Link anfang) {
        this.anfang = anfang;
        this.ende = anfang;
    }

    public void add(Link neu) {

        if (this.anfang == null) {
            this.anfang = neu;
            this.ende=neu;
        } else {
            this.ende.nächster = neu;
            ende = ende.nächster;
        }

    }

    public void iter() {
        Link a = anfang;

        while (a != null) {

            System.out.print(a.wert + " ");

            a = a.nächster;
        }

    }

    public void anzEl() {
        Link a = anfang;
        int count = 0;

        while (a != null) {

            ++count;
            a = a.nächster;
        }
        System.out.println("Die liste besitzt " + count + " an Elementen");
    }

    public void fügeWertein(int value) {
        Link neu = new Link(value, null);
        Link a = anfang;

        while (a.nächster != null) {

            if (a.wert == value) {
                System.out.println("Wert ist schon vorhanden");
                return;

            }
            a = a.nächster;

        }
        a.nächster = neu;

    }

Das ist dann der Code in Code Tags :) Was meien spezifische Frage ist , steht ja Anfangs
 
Zuletzt bearbeitet von einem Moderator:
J

JustNobody

Also ein grober Unterschied ist:
Mit a != null läufst du komplett durch und am Ende ist a halt null.
Ist ok, wenn du alle Elemente einmal anpacken willst.

Mit a.next != null läufst du nur bis zum letzten Element. A ist dann nicht null sondern das letzte Element.

Also bei letzter Variante bleibst du beim Vorgänger stehen. In einer einfach verketteten Liste ist dies notwendig, wenn man den Vorgänger auch benötigt um z.B. da den next Wert anzupassen.
 
S

Sandro95

Also ein grober Unterschied ist:
Mit a != null läufst du komplett durch und am Ende ist a halt null.
Ist ok, wenn du alle Elemente einmal anpacken willst.

Mit a.next != null läufst du nur bis zum letzten Element. A ist dann nicht null sondern das letzte Element.

Also bei letzter Variante bleibst du beim Vorgänger stehen. In einer einfach verketteten Liste ist dies notwendig, wenn man den Vorgänger auch benötigt um z.B. da den next Wert anzupassen.

also , wenn ich durchlaufe beim durchlaufen zB die Elemente zählen möchte , a.wert ausgeben oder einfach nur ein Wertevergleich machen möchte dann laufe ich einmal komplett durch die liste durch mit a!= null?
Bei welche Operationen läuft man in der while zb(a.nächster!=null)?
 
S

Sandro95

@JustNobody die letztere variante wäre dann beim löschen eines elemts an ieiner stelle oder einfügen an ieiner stelle notwendig richtig ?
 
J

JustNobody

Ja genau. Einfügen gehst du z.B. so lange durch, bis a.next == null ist oder a.next.wert so ist, dass der neue Wert davor kommen soll.

Aber vorsichtshalber noch die Bemerkung: Das ist natürlich nur eine Lösung. Man kann z.B. auch mit a != null und so prüfen und sich den Vorgänger merken. Also mit zusätzlicher Variable und so. Es gibt also oft mehrere Lösungsideen. Aber diese Alternative Lösung hat z.B. mehr code. Was einem besser gefällt muss jeder für sich entscheiden.
 
S

Sandro95

@JustNobody , es sei denn ich soll am anfang oder ende einfügen da brauche ich das ja nicht , oder ?

ja das weiß ich , mir gefällt dieser weg aber besser
 
J

JustNobody

Ja, da hast du Recht. Wenn du bereits die notwendigen Elemente zur Hand hast, dann brauchst du das nicht.

Anfang ist immer klar, denn du hast ja den Zeiger auf das erste Element.

Das letzte Element hält man nicht zwingend vor. Das zu speichern ist somit eine Optimierung. Wenn du das letzte Element schon hast, musst du nicht mehr durch die Liste durch gehen.
 
T

temi

In "nächster" steckt ja das Element, welches auf das aktuelle Element folgt. Einmal schaust du also, ob das aktuelle Element null ist, dann bist du am Ende angekommen. Im anderen Fall, schaust du, ob es nach dem aktuellen Element noch ein weiteres gibt (a.next != null).
 
Thema: 

Listen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben