Leute habe das Problem gelöst habe nun ein Satck Problem mit meinem Programm:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define Null 0
struct list_element{
char element[40]; /*Element für diesen Knoten*/
struct list_element *next; /*Zieger auf den nächsten Knoten*/
};
typedef struct list_element knoten; /*Verienbarung des Strukturtyps */
int menu(void){
int wahl;
do{
printf("\nHaupmenue:\n");
printf("\n1 - Liste erstellen ");
printf("\n2 - Element hinzufuegen");
printf("\n3 - Element loeschen");
printf("\n4 - Programm beenden");
printf("\nBitte geben Sie ihre Auswahl ein (1, 2, 3 oder 4) ein:");
scanf("%d", &wahl);
if(wahl < 1 wahl > 4)
printf("\n Fehler - Bitte geben Sie es erneut ein\n");
}
while((wahl < 1)|| (wahl > 4));
printf("\n");
return(wahl);
}
void erstellen(knoten *datensatz){
printf("Element(fuer Beendigung ENDE eingeben):");
scanf("%\n", datensatz->element);
if(strcmp(datensatz->element,"ENDE")==0)
datensatz->next = NULL;
else{
datensatz->next=(knoten*)malloc(sizeof(knoten));
erstellen(datensatz->next);
}
return ;
}
void anzeigen(knoten *datensatz){
if (datensatz->next != NULL){
printf("%s\n", datensatz->element);
anzeigen(datensatz->next);
}
return;
}
knoten *einfuegen(knoten *erster){
knoten *locate(knoten*, char[]);
knoten *neu_satz;
knoten *tag;
char neu_element[40];
char ziel[40];
printf("Neues Element: ");
scanf("%\n", neu_element);
printf("Vor folgendem Element einfügen(ENDE eingeben, wenn vor letztes): ");
scanf("%\n", ziel);
if(strcmpi(erster->element, ziel) == 0){
neu_satz = (knoten*)malloc(sizeof(knoten));
strcpy(neu_satz->element, neu_element);
neu_satz->next = erster;
erster = neu_satz;
}
else{
tag = locate(erster, ziel);
if(tag == NULL)
printf("\n Keine Entsprechung gefunden - Bitte erneut versuchen\n");
else{
neu_satz = (knoten*)malloc(sizeof(knoten));
strcpy(neu_satz->element, neu_element);
neu_satz->next = tag->next;
tag->next = neu_satz;
}
}
return (erster);
}
knoten *locate(knoten *datensatz, char ziel[]){
if(strcmpi(datensatz->next->element, ziel) == 0)
return(datensatz);
else{
if(datensatz->next->next == NULL)
return(NULL);
else
locate(datensatz->next, ziel);
}
}
knoten *loeschen(knoten *erster){
knoten *locate(knoten*, char[]);
knoten *tag;
knoten *temp;
char ziel[40];
printf("Zu loeschendes Element bitte eintippen: ");
scanf("%[^\n]", ziel);
if(strcmpi(erster->element, ziel) == 0){
temp = erster->next;
free(erster);
erster = temp;
}
else
tag = locate(erster, ziel);
if(tag == NULL)
printf("\nKeine Entsprechung gefunden - Bitte erneut versuche\n");
else{
temp = tag->next->next;
free(tag->next);
tag->next = temp;
}
return (erster);
}
main(){
knoten *start; /*Zieger auf den Listenanfang*/
int wahl; /*Vereinbarung einer lokalen Veriablen*/
int menu(void); /*Funktionsvereinbarung*/
void erstellen(knoten *ptr); /*Funktionsvereinbarung*/
knoten *einfuegen(knoten *ptr); /*Funktionsvereinbarung*/
knoten *loesche(knoten *ptr); /*Funktionsvereinbarung*/
void anzeigen(knoten *ptr); /*Funktionsvereinbarung*/
do{
wahl = menu();
switch(wahl){
case 1: /*Liste erstellen*/
start = (knoten *)malloc(sizeof(knoten)); /*Für den ersten Knoten Speicherplatz zuweisen*/
erstellen(start);
printf("\n");
anzeigen(start);
continue;
case 2: /* Element hinzufügen*/
start = einfuegen(start);
printf("\n");
anzeigen(start);
continue;
case 3: /*Ein Element enntfernen*/
start = loeschen(start);
printf("\n");
anzeigen(start);
continue;
default: /*Programm beenden*/
printf("\n\tEnde des Programms\n");
}
}
while( wahl != 4);
}
bitte um Hilfe!!!!