Napisałem taki kod. Nie rozumiem, dlaczego program po wczytaniu danych (funkcja N) mi się zawiesza. Wszystko jest okej, aż podam ostatnie dane w funkcji N i wtedy wykonuje się funkcja dodaj(first, nowy).
#include <stdio.h>
struct pracownik{
char nazwisko[30];
int pensja;
int procent_premii;
pracownik * next;
};
void dodaj(pracownik * first, pracownik * nowy)
{
if(first)
{
pracownik * temp = new pracownik;
temp = first;
while(temp->next)
{
temp=temp->next;
}
temp->next = nowy;
}
else first = nowy;
}
void N(pracownik * first)
{
pracownik * nowy = new pracownik;
printf("----DODAJ PRACOWNIKA----\nNazwisko: ");
scanf("%s",&nowy->nazwisko);
printf("\nPensja: ");
scanf("%d",&nowy->pensja);
printf("\nProcent (bez znaku procent): ");
scanf("%d",&nowy->procent_premii);
dodaj(first, nowy);
}
int main()
{
pracownik * first;
char wybor;
int ile_pracownikow = 0;
poczatek:
printf("MENU:\n----\nN - nowy pracownik\nP - nowa wartosc pensji dla istn. pracownika\nR - nowa wartosc procentu\nW - wyplata\nK - koniec programu\n");
scanf("%c",&wybor);
switch(wybor)
{
default:
printf("Nie ma takiej opcji.\n\n");
goto poczatek;
case 'N':
if(ile_pracownikow<10)
{
N(first);
ile_pracownikow++;
}
else
{
printf("\nPodano juz 10 pracownikow, czyli maksimum\n");
}
goto poczatek;
}
return 0;
}
W Internecie spotkałem się z przykładem struktury struktur i tam było dodawanie elementu do listy (pierwsza struktura - osoba, druga struktura - lista). Czy to konieczne? Czy nie można tego zrobić na pojedynczej strukturze? Dlaczego program się zawiesza?