linked list

verkettete Listen

!Beispiel Verkette Liste.png

Basics

Implementierung

Listenoperationen

Suchen

Einfügen

Entfernen

Versetzen eines Elements

Struct Definition für Elemente (Namenskonvention _typename):

/* Datentyp für einfach verkettete Liste */ 
typedef struct _slist {
	int value;           // Daten 
	struct _slist *next; // Nachfolger 
	} slist; 
	slist meine_liste;   // Deklaration

Durchlaufen der linked list:

typedef struct _slist { 
	int value;                  // Daten 
	struct _slist *next;        // Nachfolger 
} slist; 
slist *root, *tmp; 
tmp = root;                    // Anfang an der Wurzel 
while(tmp != NULL) {           // Solange Nachfolger 
	printf("%d\n", tmp->value); // Wert 
	tmp = tmp->next;            // Nächstes Element 
}

Minimale Implementierung:

Datentyp für das erste Element (etwas modifiziert)

typedef struct _list_el { 
	int value;             // Daten 
	struct _list_el *next; // Nachfolger 
} list_el; 

head (Kopfzeiger): Zeigt auf das erste Element der Liste.

typedef struct _list { 
	int count;      // Anzahl Listeneinträge 
	list_el *first; // Erstes Element der Liste 
} list; 

Methoden / Funktionen:

Initialisieren

list * warenliste = calloc(1, sizeof(list)); 
void init_list(list *list_pointer){ 
	list_pointer->first = NULL; 
	list_pointer->count = 0; 
} 
init_list(warenliste);

Find element

Insert element

list * warenliste = calloc(1, sizeof(list)); 
void list_insert(list *list_pointer, int value){ 
	list_el * new = (list_el *) calloc(1, sizeof(list_el)); 
	new->value = value; 
	new->next = list_pointer->first; 
	list_pointer->first = new; 
	list_pointer->count++; +
} 
list_insert(warenliste, 100);

Ausgeben

list * warenliste = calloc(1, sizeof(list)); 
void list_print(list *list_pointer){ 
	list_el *tmp = list_pointer->first; 
	while(tmp) { 
		printf(“cur: %d “, tmp->value); 
		tmp = tmp->next; 
	} printf(“\n“); 
} 
list_print(warenliste);

Implementierungsvarianten

Minimale Implementierung:

Verkette Liste mit extra Wurzel

Einfacher Kopfzeiger

zyklische Verkettung