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

Hilfe
Neues Thema
Antworten


Nach oben



