/* * Daniel, Danner, sidadann, Inf. Dipl.; * Peter, Kranz, sipekran, Inf. Dipl.; */#include <stdlib.h>#include <stdio.h>/* * Struct definieren welches fuer die liste verwendet wird */struct Element { int number; struct Element *next;};/* * zwei pointer fuer den anfang und ende der List */struct Element *head;struct Element *tail;void append_element(int value) { /* * einen temporaeren pointer erstellen allozieren und * die value aus der signatur darin speichern */ struct Element *temp; temp = (struct Element *) malloc(sizeof(struct Element)); if (temp == NULL) { perror("malloc: Kein Speicher verfuegbar!"); exit(2); } temp->number = value; /* * wenn es noch keinen Kopf gibt, temp als kopf setzen * und darausfolgend tail auch */ if (head == NULL) { head = temp; tail = temp; return; } /* * andernfalls temp an letzte position anhaengen * und tail umsetzen */ tail->next = temp; tail = tail->next;}int remove_element() { /* * zwischenvariablen */ int returnValue; struct Element *temp; /* * wenn es keine elemente gibt, wie gefordert -1 * zurueckgeben */ if (head == NULL) { return -1; } /* * ansonsten das erste element, und dessen Wert * zwischenspeichern, head weitersetzen und Speicher * freigeben */ temp = head; returnValue = head->number; head = head->next; free(temp); /* * sollte der Kopf leer sein muss tail auch leer sein * => tail auf Null setzen * * abschliessend geloeschten Wert zurueckgeben */ if (head == NULL) { tail = NULL; } return returnValue;}int main() { append_element(47); append_element(11); append_element(42); printf("remove: %d\n", remove_element()); printf("remove: %d\n", remove_element()); printf("remove: %d\n", remove_element()); printf("remove: %d\n", remove_element()); append_element(13); printf("remove: %d\n", remove_element()); return 0;}