Cherrycoke
Mitglied
Hallo,
ich habe Schwierigkeiten mit folgendem Code:
Und zwar sollte die Funktion "add_left" eine Liste erstellen, und ein Element an der linken Seite der Liste hinzufügen. Wie man an meiner Testausgabe sehen kann, ist der else-Teil der If-Abfrage nie erfüllt. Leider weiß ich jedoch nicht warum. Ich kann daraus nur Ableiten, dass
aus dem oberen Teil der If-Abfrage eine falsche Anweisung wäre? Wie müsste das denn richtig heißen?
Ich danke schon einmal für einen kurzen Tipp!
ich habe Schwierigkeiten mit folgendem Code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
/* Liste = Zeiger auf einen Knoten */
typedef struct Knot * Liste;
/* Knoten enthaelt eine eingelesene Zahl */
typedef struct Knot{
int k;
Liste rest;
} Knoten;
Liste list = NULL;
int maxi (int eingabe, int maximum)
{
if (eingabe > maximum)
{
return eingabe;
}
else
{
return maximum;
}
}
void add_left (int eingabe, Liste list)
{
Liste neu;
neu = calloc(1, sizeof(Knoten));
neu->k = eingabe;
neu->rest = NULL;
if (list == NULL)
{
list = neu;
printf("Die Liste ist leer (nun gefuellt)\n");
}
else
{
neu->rest = list;
list = neu;
printf("Die Liste war bereits gefuellt\n");
}
}
int main (void){
int eingabe = 1;
int summe = 0;
int anzahl = 0;
int maximum = 0;
while (eingabe != 0)
{
printf("Zahl eingeben (0 fuer Ende): ");
scanf("%d", &eingabe);
add_left(eingabe, list);
anzahl++;
summe=summe+eingabe;
maximum = maxi(eingabe, maximum);
}
printf("Anzahl der Zahlen: %d\n", anzahl);
printf("Summe: %d\n", summe);
printf("Maximum: %d\n", maximum);
return 0;
}
Und zwar sollte die Funktion "add_left" eine Liste erstellen, und ein Element an der linken Seite der Liste hinzufügen. Wie man an meiner Testausgabe sehen kann, ist der else-Teil der If-Abfrage nie erfüllt. Leider weiß ich jedoch nicht warum. Ich kann daraus nur Ableiten, dass
Code:
list = neu;
aus dem oberen Teil der If-Abfrage eine falsche Anweisung wäre? Wie müsste das denn richtig heißen?
Ich danke schon einmal für einen kurzen Tipp!