21.11.2013 Aufrufe

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

27.3 Doppelt verkettete Liste<br />

E<strong>in</strong>füge <strong>und</strong> Löschoperationen lassen sich bei e<strong>in</strong>er Liste deutlich vere<strong>in</strong>fachen, wenn man bei den<br />

Datenelementen e<strong>in</strong>en Rückwärtszeiger e<strong>in</strong>führt. Damit hat man von jedem Element aus auch<br />

Zugriff auf se<strong>in</strong>en Vorgänger.<br />

Head<br />

Element 1<br />

Element 2<br />

Element 3 Element 5<br />

Element 4<br />

Tail<br />

E<strong>in</strong> Datenelement e<strong>in</strong>er doppelt verketteten Liste könnte <strong>in</strong> C wie folgt def<strong>in</strong>iert werden:<br />

struct Datenelement {<br />

/* Hier kommen <strong>die</strong> Daten <strong>die</strong> gespeichert werden sollen */<br />

/* (Z.B. struct Student Daten; oder wie hier e<strong>in</strong> simpler <strong>in</strong>t */<br />

<strong>in</strong>t Wert;<br />

}<br />

/* Und hier das wichtigste: <strong>E<strong>in</strong>e</strong>n Zeiger auf den Nachfolger */<br />

struct Datenelement *Next;<br />

/* <strong>und</strong> e<strong>in</strong>en auf den Vorgänger */<br />

struct Datenelement *Previous;<br />

Die Listenoperationen gestalten sich eigentlich ähnlich wie bei der e<strong>in</strong>fach verketteten Liste, nur<br />

muss jetzt immer auch der Rückwärtszeiger behandelt werden.<br />

Um e<strong>in</strong> Element am Listenanfang e<strong>in</strong>zufügen, ist somit wie folgt vorzugehen:<br />

Struktogramm<br />

C-Code<br />

Ja<br />

Liste Leer?<br />

Tail auf Neues Rückzeiger von<br />

Element zeigen bisher vorderstem<br />

lassen<br />

Element auf neues<br />

Element zeigen<br />

lassen<br />

Neues Element auf bisher vorderstes<br />

Element zeigen lassen<br />

Head auf neues Element zeigen lassen<br />

Rückzeiger von neuem Element auf<br />

Null setzen.<br />

if (Head == NULL) {<br />

Tail = NewElement;<br />

} else {<br />

}<br />

Head->Previous =<br />

NewElement;<br />

NewElement->Next =<br />

Head;<br />

Head = NewElement;<br />

NewElement->Previous =<br />

NULL;<br />

Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 105/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!