Chtěl bych požádat nějakou dobrou duši o pomoc. Do školy mám vypracovat program jehož hlavní součástí je seznam s možností přidávání na konec i začátek s použitím pointerů. Přidání na konec funguje, ale s přidáním na začátek mám problém (vím, že tam má být pointer na předchůdce). poraďte pls (nejradši přímo dopsáním :)
typedef struct osoba{
char jmeno[30];
int vek;
struct osoba *dalsi; ///pointer na dalsi strukturu
} OSOBA;
OSOBA *alokuj() ///vraci pointer na alokovanou pamet struktury osoba
{
OSOBA *os;
os=(OSOBA*)malloc(sizeof(OSOBA));
return os;
}
void nacti(OSOBA *os ) ///neni nutna navratova hodnota
{
printf("Zadejte jmeno:");
scanf("%s", os->jmeno);
printf("Zadejte vek:");
scanf("%d", &os->vek);
os->dalsi=NULL; ///nastaveni pointeru na dalsi strukturu na "zakladni" hodnotu
}
int main(int argc, char* argv[])
{
OSOBA *osoba,*nulta, *prvni, *aktualni,*posledni, *pomocna,*pomocna2,*nej;
int i;
osoba=alokuj();
nacti(osoba);
prvni=osoba; ///zapamatovani prvni polozky seznamu
posledni=osoba; //ulozeni pointeru posledni zpracovane polozky seznamu
osoba=alokuj();
nacti(osoba);
posledni->dalsi=osoba; ///nastaveni pointeru z minule struktury na aktualni
posledni=osoba; ///ulozeni pointeru posledni zpracovane polozky seznamu
printf("\n");
pomocna=prvni;
while(pomocna!=NULL) ///dokud neni pointer NULL => je NULL u posledni polozky seznamu
{
printf("%s - %d\n", pomocna->jmeno, pomocna->vek);
pomocna=pomocna->dalsi; ///prejiti na dalsi polozku v seznamu
}
pomocna=prvni;
int nejstarsi=0;
while(pomocna!=NULL)
{if(pomocna->vek > nejstarsi) {nejstarsi=pomocna->vek;nej=pomocna;
}
pomocna=pomocna->dalsi;}
printf("%s - %d\n", nej->jmeno, nej->vek);