Witam, próbuję stworzyć listę dwukierunkową dodającą filmy.
Funkcja dodająca:
Film *push(struct Film *head, string tytul, char data[11], string imie, string nazwisko, string studio, string gatunek,string inne)
{
if(head==NULL) {
head=(struct Film*)malloc(sizeof(struct Film));
tmp=(struct Film*)malloc(sizeof(struct Film));
(*head).ID =ID; // int ID to zmienna globalna zadeklarowana na poczatku i zwiekszana o 1 przy kazdym wywolaniu funkcji push
(*head).tytul = tytul;
(*head).data[11] = data[11];
(*head).imie = imie;
(*head).nazwisko = nazwisko;
(*head).studio = studio;
(*head).gatunek = gatunek;
(*head).inne = inne;
(*head).next=NULL;
(*head).prev=NULL;
tmp=head;
} else {
element=(struct Film*)malloc(sizeof(struct Film));
(*element).ID =ID; // int ID to zmienna globalna zadeklarowana na poczatku i zwiekszana o 1 przy kazdym wywolaniu funkcji push
(*element).tytul = tytul;
(*element).data[11] = data[11];
(*element).imie = imie;
(*element).nazwisko = nazwisko;
(*element).studio = studio;
(*element).gatunek = gatunek;
(*element).inne = inne;
(*element).next=NULL;
(*element).prev=tmp;
(*tmp).next=element;
tmp=element;
}
ID++;
return head;
}
Niestety po dodaniu choćby jednego elementu przy próbie dostania się do niego wyskakuje widowsowy błąd.
Np. po wywołaniu: cout << (*head).ID; lub cout head->ID;
Nie działa przez to opcja wywoływania danego elementu z listy po ID.
{cout << "Podaj ID";
int id=0;
cin >> id;
tmp=head;
while ( tmp!=NULL && tmp->ID!=id)
{tmp=tmp->next;
if ( tmp!=NULL && tmp->ID==id)
{cout << tmp->nazwisko;
cout << tmp->ID << tmp->data[11] << tmp->imie << tmp->nazwisko << tmp->studio;
cout << tmp->gatunek << tmp->inne;}
}
Proszę o pomoc w znalezieniu błędu.