#include #include #include int cmd=0, waslast=0; char delwort[20], prewort[20], addwort[20]; struct eintrag { // Deklaration eines Listenelements char wort[20]; struct eintrag *next; }; typedef struct eintrag element; struct eintrag *liste; //Zeiger auf den Anfang der Liste struct eintrag *previous; struct eintrag *new; void erstellen (element* ptr) { printf ("Wort eingeben ('ENDE' fuer Ende der Liste): "); scanf("%s", ptr->wort); if (strcmp(ptr->wort,"ENDE")==0) ptr->next=NULL; else { ptr->next = (element*) malloc(sizeof(element)); erstellen (ptr->next); } return; } void anzeigen (element* ptr){ if (ptr->next != NULL) { printf ("%s\n",ptr->wort); anzeigen (ptr->next); } return; } void createlist (void) { liste = (element*)malloc(sizeof(element)); erstellen(liste); } void addentry (element* ptr, char* preword, char* addword) { if (ptr->next != NULL) { if (strcmp(ptr->wort,preword)==0) { new = (element*)malloc(sizeof(element)); if (ptr==liste) liste=new; else previous->next=new; new->next=ptr; strcpy(new->wort,addword); } else { previous=ptr; addentry (ptr->next, preword, addword); } } return; } void addentrystart (void) { printf("Welches Wort soll eingefügt werden? "); scanf("%s",&addwort); printf("Vor welchem Wort soll eingefügt werden? "); scanf("%s",&prewort); addentry (liste, prewort, addwort); } void delentry (element* ptr, char* keyword) { if (ptr->next != NULL) { if (strcmp(ptr->wort,keyword)==0) { if (ptr==liste) liste=ptr->next; else previous->next=ptr->next; free(ptr); } else { previous=ptr; delentry (ptr->next, keyword); } } } void delentrystart (void) { printf("Welches wort soll geloescht werden? "); scanf("%s",&delwort); delentry (liste, delwort); } int main(int argc, char* argv[]) { do { printf ("Bitte waehlen Sie:\n1 - Liste erstellen\n2 - Element hinzufuegen\n3 - Element löschen\n4 - Liste anzeigen\n5 - Programm beenden\nAuswahl:"); scanf("%d",&cmd); if (cmd == 1) { createlist(); } if (cmd == 2) { addentrystart(); } if (cmd == 3) { delentrystart(); } if (cmd == 4) { anzeigen(liste); } } while (cmd!=5); return 0; }