Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template <typename T>
- class lista
- {
- private:
- T zawartosc;
- lista<T>* wsk_nast = NULL;
- unsigned int indeks;
- public:
- static inline lista<T>* wsk_pierwszy;
- static inline lista<T>* wsk_ostatni;
- void popraw()
- {
- lista<T>* wsk_tmp = wsk_pierwszy;
- unsigned int tmp = 0;
- while (wsk_tmp != wsk_ostatni)
- {
- wsk_tmp->indeks = tmp;
- cout << tmp << " ";
- tmp++;
- wsk_tmp = wsk_tmp->wsk_nast;
- }
- wsk_tmp->indeks = tmp;
- cout << tmp << " ";
- cout << endl << "ustawiono indeksy" << endl;
- }
- lista()
- {
- wsk_pierwszy = this;
- wsk_ostatni = this;
- wsk_nast = NULL;
- indeks = 0;
- zawartosc = zawartosc;
- }
- lista(T zaw, lista<T>* wsk_n, unsigned int ind): zawartosc(zaw), wsk_nast(wsk_n), indeks(ind) //push_front
- {
- cout << "dodano wartosc " << zawartosc << "(" << indeks << ")" << endl;
- }
- lista(T zaw, unsigned int ind): zawartosc(zaw), indeks(ind) //push_back, insert
- {
- cout << "dodano wartosc " << zawartosc << "(" << indeks << ")" << endl;
- if (indeks == 1)
- {
- wsk_pierwszy->wsk_nast = this;
- }
- wsk_ostatni = this;
- wsk_nast = NULL;
- }
- void drukuj()
- {
- lista<T>* wsk_tmp = wsk_pierwszy;
- while(wsk_tmp != wsk_ostatni)
- {
- wsk_tmp = wsk_tmp->wsk_nast;
- cout << wsk_tmp->zawartosc << "(" << wsk_tmp->indeks << ")" << " ";
- }
- cout << endl;
- }
- void push_back(T tmp)
- {
- cout << "Na koniec" << endl;
- unsigned int temp = wsk_ostatni->indeks;
- wsk_ostatni->wsk_nast = new lista<T>(tmp, temp + 1);
- }
- void push_front(T tmp)
- {
- cout << "Na poczatek" << endl;
- lista<T>* wsk_temp = wsk_pierwszy->wsk_nast;
- wsk_pierwszy->wsk_nast = new lista<T>(tmp, wsk_temp, 1);
- popraw();
- }
- void insert(unsigned int ind, T tmp)
- {
- cout << "Na miejsce nr.: " << ind << endl;
- if (ind <= wsk_ostatni->indeks)
- {
- lista<T>* wsk_tmp = wsk_pierwszy;
- while (wsk_tmp->indeks != ind - 1)
- {
- wsk_tmp = wsk_tmp->wsk_nast;
- }
- lista<T>* wsk_temp = wsk_tmp->wsk_nast;
- wsk_tmp->wsk_nast = new lista<T>(tmp, wsk_temp, ind);
- popraw();
- }
- else
- {
- cout << "Indeks zbyt duzy, nic nie dodano" << endl;
- }
- }
- };
- int main()
- {
- lista<int> test;
- test.push_back(7);
- test.push_front(6);
- test.insert(2, 5);
- test.drukuj();
- return 0;
- }
- u
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement