Guest User

Untitled

a guest
May 22nd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.56 KB | None | 0 0
  1. //list.h
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. template<class T>
  7. class list
  8. {
  9. public:
  10.     //*********************
  11.     class node
  12.     {
  13.     protected:
  14.         node *next;
  15.         node *prev;
  16.         T value;
  17.     public:
  18.         node()
  19.         {
  20.             next=NULL;
  21.             prev=NULL;
  22.         }
  23.  
  24.         node(T pom)
  25.         {
  26.             next=NULL;
  27.             prev=NULL;
  28.             value=pom;
  29.         }
  30.        
  31.         node(node* prev1, T data)
  32.         {
  33.             prev = prev1;
  34.             next = NULL;
  35.             value = data;
  36.         }
  37.  
  38.         node(node *prev1,node *next1,T pom)
  39.         {
  40.             prev=prev1;
  41.         }
  42.  
  43.         node *get_prev()
  44.         {
  45.             return prev; //wskaźnik do poprzedniego elementu
  46.         }
  47.         node *get_next()
  48.         {
  49.             return next;    //wskaźnik do następnego elementu
  50.         }
  51.  
  52.         T get_value()
  53.         {
  54.             return value;
  55.         }
  56.  
  57.         void ustaw_next(node *pom)
  58.         {
  59.             next=pom;
  60.         }
  61.  
  62.         void ustaw_prev(node *pom)
  63.         {
  64.             prev=pom;
  65.         }
  66.     };
  67.    
  68.     //***************************
  69. protected:
  70.     node *head;
  71.     node *tail;
  72. public:
  73.     list()
  74.     {
  75.         head=NULL;
  76.         tail=NULL;
  77.     }
  78.     node *get_head()
  79.     {
  80.         return head;
  81.     }
  82.     node *get_tail()
  83.     {
  84.         if(tail==NULL){
  85.             return head;
  86.         }
  87.         else{
  88.             return tail;}
  89.        
  90.     }
  91.  
  92.     void push(T value)
  93.     {
  94.         if (head == NULL) {
  95.             head = new node(value);
  96.         }
  97.         else if(tail==NULL)
  98.         {
  99.             tail = new node(tail, value);
  100.             head->ustaw_next(tail);
  101.         }
  102.         else
  103.         {
  104.             node* nowy = new node(tail, value);
  105.             tail->ustaw_next(nowy);
  106.             tail = nowy;
  107.         }
  108.     }
  109.  
  110.     void remove(T value)//nie działa
  111.      {
  112.          node *pom=head;
  113.  
  114.          while(pom->get_next()!=NULL)
  115.          {
  116.                  node *pom2=pom->get_next();
  117.                  node *pom3=pom2->get_next();
  118.                  node *pom4=pom2->get_prev();
  119.  
  120.              if (pom2->get_value()== value )
  121.              {
  122.                  
  123.                  
  124.                  pom->ustaw_next(pom3);
  125.                  pom3->ustaw_prev(pom4);
  126.                        
  127.              pom2=NULL;                
  128.            
  129.              delete pom2;      
  130.              }
  131.              else
  132.              {pom=pom->get_next();}
  133.          }
  134.     }
  135.    
  136.          
  137.  
  138.      ~list()
  139.     {
  140.        
  141.         for( node *i=get_head();i!=NULL;i=i->get_next())
  142.         {
  143.             if (i->get_prev() != NULL)
  144.             {
  145.                 delete i->get_prev();
  146.             }
  147.         }
  148.       delete get_tail();
  149.      }
  150.  
  151.      void show()
  152.      {
  153.          for( node *i=get_head() ;i!=NULL;i=i->get_next())
  154.         {
  155.            
  156.             cout<<i->get_value()<<endl;
  157.             }
  158.      }
  159.  
  160.      void save()
  161.      {
  162.          ofstream plik;
  163.          plik.open("stan.txt");
  164.  
  165.          for( node *i=get_head() ;i!=NULL;i=i->get_next())
  166.         {
  167.             plik<<i->get_value();
  168.             }
  169.  
  170.      };
  171.  
  172.      T search(T value)
  173.      {
  174.          
  175.          T pom;
  176.          for( node *i=get_head() ;i!=NULL;i=i->get_next())
  177.         {
  178.             if(i->get_value()==value)
  179.                 pom=i->get_value();
  180.                 return pom->value;
  181.             else
  182.                 return 0;
  183.          }
  184.      }
  185.  
  186.  
  187. };
Add Comment
Please, Sign In to add comment