Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
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 Zugriff<br />
auf se<strong>in</strong>en Vorgänger.<br />
Head<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 />
}<br />
Element 1<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 />
Element 2<br />
Element 3 Element 4 Element 5<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 />
Ja<br />
Struktogramm C-Code<br />
Liste Leer?<br />
Tail auf Neues Rückzeiger von<br />
Element zeigen bisher vorderstem<br />
lassen<br />
Element auf neues<br />
Element<br />
lassen<br />
zeigen<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 />
Head->Previous =<br />
NewElement;<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 105/147<br />
}<br />
NewElement->Next =<br />
Head;<br />
Head = NewElement;<br />
NewElement->Previous =<br />
NULL;