M
miniME
Hey Leute,
hab da ein Problem mit einer Verketteten Liste in C. Meiner Meinung nach müsste das doch alles so gehen, ich kann den Fehler einfach nicht erkennen.
Beider Funktion addElement muss ein Fehler irgendwo bei der while-Schleife liegen um an das letzte Element in der Liste zu kommen. Bei der Ausgabe stimmt auch was nicht, da wird auch wenn es ein Null-Pointer ist die Schleife ausgeführt.
hab da ein Problem mit einer Verketteten Liste in C. Meiner Meinung nach müsste das doch alles so gehen, ich kann den Fehler einfach nicht erkennen.
Beider Funktion addElement muss ein Fehler irgendwo bei der while-Schleife liegen um an das letzte Element in der Liste zu kommen. Bei der Ausgabe stimmt auch was nicht, da wird auch wenn es ein Null-Pointer ist die Schleife ausgeführt.
Code:
#include <stdio.h>
#include <string.h>
typedef struct movie MOVIE;
int ID = 0;
struct movie {
int id;
char title[100];
double rating;
struct releaseDate {
int day;
int month;
int year;
} releaseDate;
MOVIE *nextElement;
};
void addElement(MOVIE *list, char title[100], double rating, int releaseDay, int releaseMonth, int releaseYear) {
while(list->nextElement != NULL) {
list = list->nextElement;
}
list->id = ID;
strcpy(list->title, title);
list->rating = rating;
list->releaseDate.day = releaseDay;
list->releaseDate.month = releaseMonth;
list->releaseDate.year = releaseYear;
list->nextElement = (MOVIE *)malloc(sizeof(MOVIE));
ID++;
}
void printList(MOVIE *list) {
while(list != NULL) {
printf("ID: %i\n", list->id);
printf("Titel: %s\n", list->title);
printf("Bewertung: %lf\n", list->rating);
printf("Veroeffentlichungsdatum: %i.%i.%i\n", list->releaseDate.day, list->releaseDate.month, list->releaseDate.year);
printf("==========================================\n");
list = list->nextElement;
}
}
int main() {
MOVIE *list = (MOVIE *)malloc(sizeof(MOVIE));
addElement(list, "Titel 1", 7.8, 5, 10, 2005);
addElement(list, "Titel 2", 6.5, 20, 5, 2008);
printList(list);
return 0;
}