ich habe hier zur Übung eine einfach Verkettete Liste hier gebastelt.
Leider kriege ich 3x folgenden Fehler zurück (CodeLite):
7: multiple definition of `startzeiger'
Ich steh momentan total auf der Leitung...
Hier der Code
Kette.c
/Main, startet die Module //(c) Oli37 #include "Kette.h" void main() { struct ELEMENT * ptr = NULL; int wert; char namen[50]; char del[50]; while(wert !=999) //Hier nur zu Testzwecken: Bei Eingabe von 999 hört die Schleife auf { printf("Geben Sie einen Namen ein: "); scanf("%s", namen); printf("Geben Sie einen Wert ein: "); scanf("%i", &wert); einfuegen_vorne(namen, wert); } ausgabe(); printf("Welchen Namen moechten Sie loeschen: "); scanf("%s", del); loeschen(del); ausgabe(); }
Kette.h
//Header der Dateien //(c) Oli37 #ifndef verkettet #define verkettet 1 #include <stdio.h> #include <string.h> struct ELEMENT { struct ELEMENT* nextElement; int wert; char name[50]; }; int einfuegen_vorne(char*, int); //void einfuegen_sortiert(); //Noch nicht implementiert int loeschen(char*); void ausgabe(void); struct ELEMENT* startzeiger = NULL; #endif
Einfuegen_Vorne.c
//Fügt ein Element am Anfang der Kette ein //(c) Oli37 #include "Kette.h" int einfuegen_vorne(char* namen, int wert) { struct ELEMENT* ptr; if((ptr = (struct ELEMENT*) malloc(sizeof(struct ELEMENT*))) == NULL) { printf("Fehler beim Hinzufuegen\n"); return 1; } else { ptr->wert = wert; strcpy(ptr->name, namen); ptr->nextElement = startzeiger; startzeiger = ptr; return 0; } }
Loeschen.c
//Loescht ein Element aus der Kette //(c) Oli37 #include "Kette.h" int loeschen(char * name) { struct ELEMENT* ptr = startzeiger, *vorgaenger; while(ptr != NULL && strcmp(ptr->name, name)) //Solange bis name mit ptr->name gleich sind { vorgaenger = ptr; //vorgaenger wird auf ptr gesetzt und jedes mal wieder ersetzt(wenn Bedingung nicht erfüllt) ptr=ptr->nextElement; //Weitergehen } if(ptr == NULL) //Abbrechen { return 1; } else { if(ptr == startzeiger) { startzeiger = ptr->nextElement; } else //Überspringe dieses Element { vorgaenger->nextElement = ptr->nextElement; //Vorgaenger zeigt nun girekt auf das nächte Element } free(ptr); return 0; } }
Ausgabe.c
//Gibt die gesamte Kette aus //(c) Oli37 #include "Kette.h" void ausgabe(void) { struct ELEMENT* ptr = startzeiger; //ptr auf startzeiger setzen while(ptr != NULL) { printf("Name: %s \t Wert: &i\n", ptr->name, ptr->wert); ptr = ptr->nextElement; //weiter mit nächtem Element } }
Bitte um Hilfe