Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. #include "ListaPracownikow.h"
  2. #include <iostream>
  3. ListaPracownikow::ListaPracownikow()
  4. {
  5.     m_pPoczatek = NULL;
  6.     m_nLiczbaPracownikow = 0;
  7. }
  8.  
  9. void ListaPracownikow::Dodaj(const Pracownik& p) {
  10.     Pracownik* nowy = new Pracownik(p);
  11.     if (m_nLiczbaPracownikow == 0) {
  12.         m_pPoczatek = nowy;
  13.         m_nLiczbaPracownikow++;
  14.     }
  15.     else {
  16.         Pracownik* tmp = m_pPoczatek;
  17.         for (int i = 0; i < m_nLiczbaPracownikow; i++) {
  18.             if (tmp->Porownaj(*nowy) == -1) {
  19.                 if (tmp->m_pNastepny) {
  20.                     tmp = tmp->m_pNastepny;
  21.                 }
  22.                 else {
  23.                     tmp->m_pNastepny = nowy;
  24.                     m_nLiczbaPracownikow++;
  25.                     break;
  26.                 }
  27.  
  28.             }
  29.             else if (tmp->Porownaj(*nowy) == 1) {
  30.                 Pracownik* tmp2 = m_pPoczatek;
  31.                 if (tmp == tmp2) {
  32.                     if (!m_pPoczatek->m_pNastepny) {
  33.                         tmp2->m_pNastepny = NULL;
  34.                     }
  35.                     m_pPoczatek = nowy;
  36.                     nowy->m_pNastepny = tmp;
  37.                     m_nLiczbaPracownikow++;
  38.                 }
  39.                 else {
  40.                     while (tmp2->m_pNastepny != tmp) {
  41.                         tmp2 = tmp2->m_pNastepny;
  42.                     }
  43.                     nowy->m_pNastepny = tmp;
  44.                     tmp2->m_pNastepny = nowy;
  45.                     m_nLiczbaPracownikow++;
  46.                     break;
  47.  
  48.                 }
  49.                 break;
  50.             }
  51.             else {
  52.                 break;
  53.             }
  54.         }
  55.  
  56.     }
  57. }
  58.  
  59. void ListaPracownikow::WypiszPracownikow() const {
  60.     Pracownik* tmp = m_pPoczatek;
  61.     std::cout << "\nLista dla: " << m_nLiczbaPracownikow << " pracownikow \n";
  62.     while (tmp) {
  63.         tmp->Wypisz();
  64.         tmp = tmp->m_pNastepny;
  65.     }
  66. }
  67.  
  68. void ListaPracownikow::Usun(const Pracownik& wzorzec) {
  69.     Pracownik* tmp = m_pPoczatek;
  70.     Pracownik* nowy = new Pracownik(wzorzec);
  71.     if (!tmp->Porownaj(*nowy)) {
  72.         m_pPoczatek = tmp->m_pNastepny;
  73.         delete tmp;
  74.         m_nLiczbaPracownikow--;
  75.     }
  76.     else {
  77.         while (tmp->m_pNastepny->Porownaj(*nowy)) {
  78.             tmp = tmp->m_pNastepny;
  79.         }
  80.         Pracownik* usun = tmp->m_pNastepny;
  81.         tmp->m_pNastepny = tmp->m_pNastepny->m_pNastepny;
  82.         delete usun;
  83.         m_nLiczbaPracownikow--;
  84.     }
  85.  
  86. }
  87.  
  88. const Pracownik* ListaPracownikow::Szukaj(const char* nazwisko, const char* imie) const {
  89.     Pracownik* tmp = m_pPoczatek;
  90.     for (int i = 0; i<m_nLiczbaPracownikow; i++)
  91.     {
  92.         if (!tmp->SprawdzNazwisko(nazwisko) && !tmp->SprawdzImie(imie)) {
  93.             return tmp;
  94.             break;
  95.         }
  96.         tmp = tmp->m_pNastepny;
  97.     }
  98.     return nullptr;
  99. }
  100.  
  101. ListaPracownikow::~ListaPracownikow()
  102. {
  103.     Pracownik* tmp = m_pPoczatek;
  104.     Pracownik* usun;
  105.     while (tmp) {
  106.         usun = tmp;
  107.         tmp = tmp->m_pNastepny;
  108.         delete usun;
  109.     }
  110.     m_pPoczatek = NULL;
  111.     m_nLiczbaPracownikow = 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement