Schoenen guten Tag, ich hab hier irgnedwo ein Fehler drin, den ich selbst leider nicht beheben kann. Ich bitte deshalb um hilfe.
Schon mal Danke im voraus.
#include
#include
#include
struct lagerverwaltung
{
long artikelnummer;
char artikelbezeichnung;
int anzahl_arikel;
struct lagerverwaltung *next;
};
struct lagerverwaltung *first = NULL;
void read_lagerverwaltung(void)
{
long an;
char at [100];
int aa;
printf(„Artikelnummer : „);
scanf (“%1d“,&an);
fflush(stdin);
printf("Artikelbezeichnung: ");
fgets (at, sizeof(at), stdin);
printf(„Anzahl der Artikel: „);
scanf (“%d“,&aa);
insert_lagerverwaltung(an,at,aa);
}
void insert_lagerverwaltung(long art_nr, char art_tit[], int anz-art)
{
/* Sie benoetigen eine Zeiger fuer den Zugriff auf die einzelnen
Elemente der Struktur*/
struct lagerverwaltung *lager_ptr;
/* Bevor Sie eine Element in die Liste einfuegen, muss ueberpruft
werden, ob sich ueberhaupt schon eine Element in dier List befindet.
Dafuer haben Sie ja den Strukturzeiger first deklariert und mit dem
Null - Zeiger initalisiert*/
if (first == NULL)
{
/* Es ist noch kein Element in der liste. Somit muessen
Sie nun Speicher fuer das erste Element in der Liste
anfordern*/
first = (struct lagerverwaltung)* malloc(sizeof(struct
lagerverwaltun));
if (first == NULL)
{
printf(„Speicherplatzmangel!!\n“);
exit(0);// Programmende
}
else
{
first-> artiklenummer = art_nr;
strcpy(first -> artikelbezeichnung, art_tit);
fist-> anzahl_artikel = anz_art;
/* Nun haben Sie alle Elemente der list an die Adresse
von „first“ eingefuegt. Nun muessen Sie die Adresse
fuer das naechste Element in der Liste vergeben. Und
dies ist erst mal der Null - Zeiger.*/
first -> next = NULL;
}
else
{
/* Es Befindet sich minderstens ein Element in der Liste. Nun
druchlaufen Sie die List so lange, bis Sie auf ein Element stossen,
welches auf NULL zeigt. Dies is das letzte Element der Liste.
Dort haengen Sie das neue Element an*/
lager_ptr=first;
/* Der Zeiger lager_ptr bekommt die Adresse des erste Elements
in der liste*/
/*Nun durchlaufen Sie mit einer while-Schleife Elemente fuer
Elemente, bis Sie eine bestimmtes Element in der Liste finde,
bei dem der next -Zeiger auf NULL zeigt*/
while(lager_ptr->next!=NULL)
lager_ptr = lager-ptr->next;
/* Wenn Sie hier angelant sind, haben Sie das letzte Element
in der Liste gefunden. Nun benoetigen Sie wieder einen Speicherplatz
zum Einfuegen des neuen Elements in der Liste*/
lager_ptr->next=(struct lagerverwaltung *) malloc(sizeof(struct
lagerverwaltung));
if (lager_ptr->next == NULL)
{
printf(„Speicherplatzmangel!!!\n“);
exit (0); // Programmende
}
else
{
/* Nun fuegen Sie das neue Element am Ende der
Liste ein, wie Sie es schon beim ersten Element der Liste
gemacht haben*/
/*lager_ptr auf die Adresse des neu reservierten Speichers
richten*/
lager_ptr = lager-ptr->next;
lager-ptr->artikelnummer = art_nr;
strcpy(lager_ptr->artikelbezeichnung,
art_tit);
lager_ptr->anzahl_artikel = anz_art;
lager_ptr->next=next;
}
}
printf("\nNeuer Artikel hinzufuegen\n\n");
}
void outout_lagerverwaltung()
struct lagerverwaltunf *lager_ptr;
if(first == NULL)
printf(„Keine Daten zum Ausgeben vorhanden!\n“);
else
{/*Zeiger lager_ptr auf das erste Element*/
lager_ptr = first;
while(lager_ptr != NULL)
{
printf(„Artikelnummer : %1d\n“,lager_ptr -> artikelnummer);
printf(„Artikelbezeichnung:%s“,lager_ptr -> artikelbezeichung);
printf(„Anzahl Artikel: %d\n\n“, lager_ptr-> anzahl_artikel);
lager_ptr = lager_ptr->next;
}
}
}
int main ()
int abfrage;
do
{
printf(" Neue Daten einlesen\n");
printf(" Alle Daten ausgeben\n");
printf(" Ende\n\n");
printf(„Ihr Auswahl: „);
scanf (“%d“,&abfrage);
fflush(stdin);
switch
{
case 1: read_lagerverwaltung();
break;
case 2: output_lagerverwaltung();
break;
case 3: printf(„Bye\n“);
break;
default: printf(„Falsche Eingabe!\n“);
}
}while(abfrage != 3);
return 0:
}