In verketteter Liste eine eingegebene Artikelnummer auf schon vorhandensein prüfen
-
Hallo,
bin dabei eine Lagerverwaltung als verkettete Liste zu schreiben. Dabei möchte ich nun eine Fehlermeldung raus geben, wenn eine Artikelnummer eingegeben wird, die schon vorhanden ist. Mein Code sieht so aus:
Struktur
//Struktur anlegen struct daten { long int artikelnr; char name[20]; float preis; long int anzahl; struct daten *next; //Zeiger der Struktur }; //Zeiger anlegen struct daten *head = NULL; //Kopfzeiger struct daten *neu = NULL; //Zeiger, um Daten neu einzufügen struct daten *aktuell = NULL; //Zeiger, um durch Liste zu laufen
Und hier der Teil der Funktion, der nicht funktioniert
void hinzufuegen() { neu = (daten*)malloc(sizeof(struct daten)); neu ->next = head; head = neu; printf("Bitte geben Sie eine Artikelnummer ein: "); scanf("%ld", &head -> artikelnr); //ab hier kommt jetzt der Teil der nicht funktioniert if(head != NULL) { aktuell = head; while(aktuell != NULL) { if(aktuell->artikelnr==head -> artikelnr) { printf("Artikelnummer schon vorhanden!\n"); printf("Bitte geben Sie eine neue Nr. ein:\n"); scanf("%ld", &head -> artikelnr); break; } aktuell = aktuell->next; } } }
Das Problem ist, dass sobald ich eine Eingabe mache, die Ausgabe kommt, dass die Artikelnummer schon vorhanden ist. Dabei ist es egal, dass die Liste leer ist oder es diese Nummer nicht gibt. Ich weiß, dass es daran liegt, dass der Head - Zeiger ungleich Null ist, sobald ich etwas eingebe, aber ich weiß nicht, wie ich dieses Problem lösen kann.
Vielen Dank für eure Hilfe!
-
Hi,
du schreibst den Wert, nach dem gesucht wird, selbst in die Liste rein.
Kein Wunder, das er gefunden wird, ne.
Nimm eine separate Variable für die Abfrage.
-
Danke für die Antwort.
Hab den Fehler nach nochmaligem selber austüfteln behoben.Trotzdem danke!