einfach verkettete Listen

Taschkin

Mitglied
Ich habe vollgendes Problem.
Im Studiumj (1.Semester) nehmen wir grad einfach verkettete Listen durch.
Leider verstehe ich das nicht ganz, oder wie man sich das vorstellen kann.

Hier ein Beispiel:

public class CharListElement
{
char content;
CharListElement next;
}

public class LinearCharList
{
//Referenz auf erstes Element
public CharListElement first;
//Fügt am Anfang der Liste neues Element hinzu
public void addFirst(char content)
{
CharListElement n = new CharListElement();
n.content = content;
n.next = first;
first = n;
}

Also ich verstehe die vorgehensweise so:

1. public CharListElement first;
2. CharListElement n = new CharListElement();
3. n.content = content;
4. n.next = first;
5. first = n;

die Rihenfolge gleich der Reihenfolge der Bilder.
Ich hoffe ich habe die Bilder richtig gezeichnet, oder habe ich da irgend einen fehler gemacht. Wenn ja sagt mir was für einen. Ansonsten, wenn alles richtig ist, verstehe ich den 4. und 5. Schritt nicht. Wie kann man sich das Bildlich am besten vorstellen.

Ich hoffe es kann mir jemand bei meinen Problem helfen, ich bedanke mich im vorraus. (danke)
 

Anhänge

  • Ohne-Titel-1.jpg
    Ohne-Titel-1.jpg
    3,1 KB · Aufrufe: 149
  • Ohne-Titel-2.jpg
    Ohne-Titel-2.jpg
    3,5 KB · Aufrufe: 147
  • Ohne-Titel-3.jpg
    Ohne-Titel-3.jpg
    3,5 KB · Aufrufe: 114
  • Ohne-Titel-4.jpg
    Ohne-Titel-4.jpg
    3,7 KB · Aufrufe: 108
  • Ohne-Titel-5.jpg
    Ohne-Titel-5.jpg
    4,1 KB · Aufrufe: 111
Hallo!

Schau mal hier:
Code:
/*
 * Created on 17.01.2005@00:32:21
 *
 * TODO Licence info
 */
package de.tutorials;

/**
 * @author Administrator
 *
 * TODO Explain me
 */
public class LinkedListExample {

    public static void main(String[] args) {
        new LinkedListExample().showIt();
    }

    /**
     * 
     */
    private void showIt() {
        LinkedList list = new LinkedList();
        ListItem li = new ListItem("A");
        list.addItem(li);
        list.addItem(new ListItem("B"));
        list.addFirst(new ListItem("C"));

        ListItem item = list.first;
        while (item != null) {
            System.out.println(item.data);
            item = item.next;
        }
    }

    class LinkedList {
        ListItem first;

        void addItem(ListItem item) {
            if (first == null) {//Wenns noch kein Element in der Liste gibt setzte item an Anfang. 
                first = item;
            } else if (first != null) { //Gibt es schon ein erstes Element gehe alle Elemente durch 
                //und finde das letzte -> (das Element bei welchem die Bedingung current.next ==null 
                //erfüllt ist.
                ListItem current = first;
                while (current.next != null) {
                    current = current.next;
                }
                current.next = item;
            }
        }

        void addFirst(ListItem item) {
            ListItem oldFirst = first; //Alten Anfang Zwischenspeichern
            item.next = oldFirst; // Zwischengespeicherter "alter" anfang ist nun nachfolger von item 
            first = item; //item ist nun "neuer" Anfang. 
        }
    }

    class ListItem {
        String data;

        ListItem next;

        public ListItem(String data) {
            this.data = data;
        }

    }
}

Ps.: Bilder dazu gibt's in der google Bildersuche.

gruß Tom
 
Zurück