Witam!
Napisałem taki program na zasadzie trochę nierozumnego kopiowania części fragmentów ale działa lecz chciałbym zrozumieć od poszewki zasadę jego działania krok po kroku głównie pod kątem właśnie listy jednokierunkowej i wskaźników w niej zawartej. Mniej więcej wiem jak to działa ale prosiłbym o przejrzyste wytłumaczenie (nie w 2 zdaniach). O to kod:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct osoba
{
int id;
char imie [20];
char nazwisko [20];
osoba * nastepny;
};
void dodaj(osoba *&pierwszy, int &licznik)
{
osoba *nowy, *pozycja;
nowy = new osoba;
nowy->id = licznik;
cout<<"Podaj imie"<<endl;
cin>>nowy->imie;
cout<<"Podaj nazwisko"<<endl;
cin>>nowy->nazwisko;
nowy->nastepny = NULL;
if (pierwszy == NULL)
{
pierwszy = nowy;
}
else
{
pozycja = pierwszy;
while (pozycja->nastepny != NULL)
pozycja = pozycja->nastepny;
pozycja->nastepny = nowy;
}
licznik++;
}
void wyswietl (osoba *&pierwszy)
{
osoba *pozycja = pierwszy;
if (pozycja == NULL)
cout << endl << "Lista jest pusta." << endl;
else
while (pozycja != NULL)
{
cout<<pozycja->id<<endl;
cout<<pozycja->imie<<endl;
cout<<pozycja->nazwisko<<endl;
cout<<" \n\n";
pozycja = pozycja->nastepny;
}
}
int main()
{
int licznik = 1;
int wybor;
osoba * pierwszy = NULL;
do
{
cout<<"1 - Dodaj nowy \n";
cout<<"2 - Wyswietl \n";
cout<<"0 - Exit \n";
cin>>wybor;
switch(wybor)
{
case 1:
dodaj(pierwszy, licznik);
system ("cls");
break;
case 2:
system ("cls");
wyswietl (pierwszy);
break;
getchar();
case 3:
return 0;
}
}
while (wybor!=0);
return 0;
}
Z góry dzięki