Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template <class T>
- struct element_listy
- {
- T wartosc;
- element_listy* next; // wskaŸnik na nastêpny element
- element_listy* prev;
- };
- template <class T>
- class Lista
- {
- element_listy<T>* head; // wskaŸnik na pocz¹tek listy
- unsigned rozmiar;
- public:
- Lista();
- ~Lista();
- unsigned size() const { return rozmiar; }
- void clear();
- void dodaj_na_koniec(T);
- void dodaj_na_miejsce(T, unsigned);
- void dodaj_na_poczatek(T);
- void usun_element(unsigned);
- void usun_pierwszy();
- void usun_ostatni();
- void wyswietl_liste();
- void zmien_wartosc(unsigned, T);
- T pobierz_wartosc(unsigned);
- };
- template <class T>
- Lista<T>::Lista() : head(nullptr), rozmiar(0) {}
- template <class T>
- Lista<T>::~Lista()
- {
- element_listy<T>* temp;
- element_listy<T>* pretemp;
- while(head)
- {
- temp = head;
- while(temp->next)
- {
- pretemp = temp;
- temp = temp->next;
- }
- delete temp;
- pretemp->next = nullptr;
- if (pretemp == head)
- {
- delete head;
- head = nullptr;
- cout << "Usunieto element\n";
- }
- cout << "Usunieto element\n";
- }
- cout << "Koniec destruktora\n";
- }
- template <class T>
- void Lista<T>::clear()
- {
- element_listy<T>* temp;
- element_listy<T>* pretemp;
- while(head)
- {
- temp = head;
- while(temp->next)
- {
- pretemp = temp;
- temp = temp->next;
- }
- delete temp;
- pretemp->next = nullptr;
- if (pretemp == head)
- {
- delete head;
- head = nullptr;
- }
- }
- rozmiar = 0;
- }
- template <class T>
- void Lista<T>::dodaj_na_koniec(T value)
- {
- element_listy<T>* nowy = new element_listy<T>;
- nowy->wartosc = value;
- nowy->next = nullptr;
- // pierwszy element listy:
- if(head == nullptr)
- {
- head = nowy;
- head->prev = nullptr;
- cout << "dodano wartosc " << head->wartosc << endl;
- }
- // ju¿ istnieje pierwszy element:
- else
- {
- element_listy<T>* temp = head;
- while(temp->next)
- {
- temp = temp->next;
- }
- temp->next = nowy;
- temp->next->prev = temp;
- cout << "dodano wartosc " << temp->next->wartosc << endl;
- }
- ++rozmiar;
- }
- template <class T>
- void Lista<T>::dodaj_na_miejsce(T value, unsigned nr)
- {
- }
- template <class T>
- void Lista<T>::dodaj_na_poczatek(T value)
- {
- }
- template <class T>
- void Lista<T>::usun_element(unsigned nr)
- {
- if(nr == 0)
- {
- element_listy<T>* temp = head->next;
- delete head;
- head = temp;
- --rozmiar;
- return;
- }
- element_listy<T>* kasowany = head;
- for(unsigned i = 0; i < nr; ++i)
- kasowany = kasowany->next;
- element_listy<T>* temp_next = kasowany->next;
- element_listy<T>* temp_prev = kasowany->prev;
- temp_prev->next = temp_next;
- temp_next->prev = temp_prev;
- delete kasowany;
- --rozmiar;
- }
- template <class T>
- void Lista<T>::usun_pierwszy()
- {
- usun_element(0);
- }
- template <class T>
- void Lista<T>::usun_ostatni()
- {
- usun_element(rozmiar - 1);
- }
- template <class T>
- void Lista<T>::wyswietl_liste()
- {
- element_listy<T>* temp = head;
- while(temp)
- {
- cout << temp->wartosc << '\t';
- temp = temp->next;
- }
- cout << endl;
- }
- template <class T>
- void Lista<T>::zmien_wartosc(unsigned nr, T value)
- {
- }
- template <class T>
- T Lista<T>::pobierz_wartosc(unsigned nr)
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement