Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <typename T>
  6. class lista
  7. {
  8. private:
  9.     T zawartosc;
  10.     lista<T>* wsk_nast = NULL;
  11.     unsigned int indeks;
  12.    
  13. public:
  14.     static inline lista<T>* wsk_pierwszy;
  15.     static inline lista<T>* wsk_ostatni;
  16.    
  17.     void popraw()
  18.     {
  19.         lista<T>* wsk_tmp = wsk_pierwszy;
  20.         unsigned int tmp = 0;
  21.         while (wsk_tmp != wsk_ostatni)
  22.         {
  23.             wsk_tmp->indeks = tmp;
  24.             cout << tmp << " ";
  25.             tmp++;
  26.             wsk_tmp = wsk_tmp->wsk_nast;
  27.         }
  28.         wsk_tmp->indeks = tmp;
  29.         cout << tmp << " ";
  30.        
  31.         cout << endl << "ustawiono indeksy" << endl;
  32.     }
  33.    
  34.     lista()
  35.     {
  36.         wsk_pierwszy = this;
  37.         wsk_ostatni = this;
  38.         wsk_nast = NULL;
  39.         indeks = 0;
  40.         zawartosc = zawartosc;
  41.     }
  42.    
  43.     lista(T zaw, lista<T>* wsk_n, unsigned int ind): zawartosc(zaw), wsk_nast(wsk_n), indeks(ind) //push_front
  44.     {
  45.         cout << "dodano wartosc " << zawartosc << "(" << indeks << ")" << endl;
  46.     }
  47.    
  48.     lista(T zaw, unsigned int ind): zawartosc(zaw), indeks(ind) //push_back, insert
  49.     {
  50.         cout << "dodano wartosc " << zawartosc << "(" << indeks << ")" << endl;
  51.        
  52.         if (indeks == 1)
  53.         {
  54.             wsk_pierwszy->wsk_nast = this;
  55.         }
  56.        
  57.         wsk_ostatni = this;
  58.         wsk_nast = NULL;       
  59.     }
  60.    
  61.     void drukuj()
  62.     {
  63.         lista<T>* wsk_tmp = wsk_pierwszy;
  64.        
  65.         while(wsk_tmp != wsk_ostatni)
  66.         {
  67.             wsk_tmp = wsk_tmp->wsk_nast;
  68.             cout << wsk_tmp->zawartosc << "(" << wsk_tmp->indeks << ")" << " ";
  69.         }
  70.        
  71.         cout << endl;
  72.     }
  73.    
  74.     void push_back(T tmp)
  75.     {
  76.         cout << "Na koniec" << endl;
  77.         unsigned int temp = wsk_ostatni->indeks;
  78.         wsk_ostatni->wsk_nast = new lista<T>(tmp, temp + 1);
  79.     }
  80.    
  81.     void push_front(T tmp)
  82.     {
  83.         cout << "Na poczatek" << endl;
  84.         lista<T>* wsk_temp = wsk_pierwszy->wsk_nast;
  85.         wsk_pierwszy->wsk_nast = new lista<T>(tmp, wsk_temp, 1);
  86.         popraw();
  87.     }
  88.    
  89.     void insert(unsigned int ind, T tmp)
  90.     {
  91.         cout << "Na miejsce nr.: " << ind << endl;
  92.        
  93.         if (ind <= wsk_ostatni->indeks)
  94.         {
  95.             lista<T>* wsk_tmp = wsk_pierwszy;
  96.        
  97.             while (wsk_tmp->indeks != ind - 1)
  98.             {
  99.                 wsk_tmp = wsk_tmp->wsk_nast;
  100.             }
  101.            
  102.             lista<T>* wsk_temp = wsk_tmp->wsk_nast;
  103.            
  104.             wsk_tmp->wsk_nast = new lista<T>(tmp, wsk_temp, ind);
  105.            
  106.             popraw();
  107.         }
  108.         else
  109.         {
  110.             cout << "Indeks zbyt duzy, nic nie dodano" << endl;
  111.         }
  112.     }
  113. };
  114.  
  115.  
  116.  
  117. int main()
  118. {
  119.     lista<int> test;
  120.    
  121.     test.push_back(7);
  122.     test.push_front(6);
  123.     test.insert(2, 5);
  124.    
  125.     test.drukuj();
  126.    
  127.    
  128.     return 0;
  129. }
  130. u
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement