Hallo zusammen, ich habe eine kurze Frage bzgl. C-Programmierung. Folgendes Szenario: Ich will eine doppelt verkettete Liste implementieren, deren Elemente mittels eines struct definiert sind. Darüber hinaus gibt es eine globale Variable, die immer auf das erste Element der Liste zeigt. Beim Start des Programms gibt es noch keine Elemente. Diese werden zur Laufzeit (nach ein paar Benutzereingaben) erzeugt und an die Liste gehängt. Das Anhängen passiert in einer Funktion, die auf die oben genannte globale Variable zugreift. Zuerst soll geprüft werden, ob der globalen Variable bereits ein Element zugewiesen ist. Wenn nein, dann wird gerade das erste Element in die Liste eingefügt => globale Variable bekommt das Element zugewiesen. Wenn ja, dann existieren bereits Elemente => Element, auf das die globale Variable verweist und das gerade erzeugte Element miteinander verketten und der globalen Variable das gerade erzeugte Element zuweisen. So weit so gut, aber wie prüfe ich in C ab, ob meiner globalen Variable bereits ein Element zugewiesen ist? In Java kann ich Attribute und Variablen mittels ==null bzw. !=null abfragen, ob sie ein Objekt referenzieren oder nicht. Wie wird sowas in C gemacht? Für Links, kurze Denkanstöße oder Tipps wäre ich sehr dankbar... Gruß Christoph
Genauso. Einfach den globalen Pointer, der auf das erste Element zeigt auf 0, bzw. auf NULL setzen.
Hi In C wird das im Grunde genauso gemacht. Deine globale Variable sollte ein Pointer sein. Am Beginn deines Programms wird der Pointer auf NULL initialisiert. D.h. du lässt denn Pointer quasi auf die Adresse 0 zeigen.
1 | ListItem *first_item = NULL; |
Wenn du jetzt ein neues Element erzeugst (malloc), dann kannst du deine globale Variable auf NULL abfragen.
1 | |
2 | if(first_item == NULL) |
3 | {
|
4 | // ...
|
5 | }
|
6 | else
|
7 | {
|
8 | // ...
|
9 | }
|
Das wärs dann eigentlich schon! mfg Andreas
Ok, danke an alle! das ist ja wirklich einfach. Jetzt kann es weitergehen :) Gruß & noch ein paar schöne letzte Tage im alten Jahr... Christoph
Wenn Du schon die eine-millionste Implementiertung einer Linked-List bauen willst (hoffentlich nur zu Übungszwecke), dann denke auch mal über "Sentinels" nach. Z.B.: http://www.brpreiss.com/books/opus4/html/page88.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.