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 ...
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