#include <iostream>
#include <string>
using namespace std;
typedef struct Osoba
{
string nazwisko;
int data_ur;
bool plec;
Osoba *nast; //pole lista jednokierunkowa pomaga w nastepnych elementach
Osoba *pop; //przechowujemy adres na poperzdni
Osoba *dziecko;
//Praca *praca //nowa struktura wiecej informacji przechowuje
Osoba(): nazwisko(" "), data_ur(0), plec(0),nast(NULL){}
Osoba(const char*n, int du, bool p) : nazwisko(n), data_ur(du), plec(p),nast(NULL) {}
void wypisz()
{
cout << nazwisko << " " << data_ur;
if (plec)
cout << "m";
else
cout << "k";
cout << endl;
}
}Os;
void wypisz(Os*h) //wsakznik na glowe
{
while (h != NULL)
{
h->wypisz(); //wypisz(h);
h = h->nast;
}
}
void liczkobiety(Osoba *h)
{
int k = 0;
while (h != NULL)
{
if (!h->plec) //do kobiet do mezczyzn bez "!"
k++;
h = h->nast;
}
cout <<"ilosc kobiet = "<< k << endl;
}
Os* dodaj(Os * head, const char *n,int du, bool p) //dodanie do listy //Os * -przechowuje adres struktury //Os** -adres adresu czyli adres głowy w srodku muszą być gwiazeczki jak "**"
{ // (wOS & head, ... nowa funkcje trzeba zrobic
Os*tmp = new Os(n, du, p);
tmp->nast = head; //tu dodalismy tylko
//head = NULL; //element na początek listy
//return tmp;
// te dwie byly przy jedenj *
head = tmp;
}
void dodajnakoniec(Os & head, const char *n, int du, bool p) -zle
{ if
Os* head1 = head;
while (head1->nast != NULL)
head = head1->nast;
head = new Os("wer", 1234, true);
head = head1;
}
Os * dodajkoniec(wOs head, const char*n, int du, bool p)
{
Os* tmp = new Os(n, du, p);
if (head == NULL)
return tmp;
Os * tmp2 = head;
while (tmp2->nast != NULL) tmp2 = tmp2->nast;
tmp2->nast = tmp;
return head;
}
int main()
{
Os * head = NULL; //przechowuje adres pierwszego elemetnu najlepiej null
//head = new Os("Nazwisko1", 1997, true); //dopisanie do tablicy pierwszy element listy
//head->nast= new Os("Nazwisko2", 1987, false); // element 2
//head->nast->nast = new Os("Nazwisko2", 1987, true); //element 3 i tak mozna dalej
//head->nast->nast->nast = new Os("Nazwisko3", 1966, false); //i tak dalej ale takie cos jest niekomfortowe
//head = new Os;
//head->nazwisko = "sa"; //mozna i tak zrobic
//head->nast = NULL;
head=dodajkoniec(head,"Nazwisko2k", 1987, false); //bedzie na końcu wyzej dziala normalnie ze pierwszy jest pierwszy
head=dodaj (head,"Nazwisko2", 1987, true); //dodawanie do listy
head=dodaj (head,"Nazwisko3", 1966, false); //bedzie na początku
wypisz(head);
liczkobiety(head);
//Os o;
//o.wypisz();
//wypisz(o);
cin.get();
return 0;
}