#include #include 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; }