# einfach verkettete Listen



## Taschkin (16. Januar 2005)

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)


----------



## Thomas Darimont (17. Januar 2005)

Hallo!

Schau mal hier:

```
/*
 * 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


----------

