Azerpsen

Basic linkedList

Jan 29th, 2023
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <utility>
  3. #include <fstream>
  4. #include <memory>
  5.  
  6. using namespace std;
  7.  
  8. template < typename T >
  9. class List;
  10.  
  11. template <typename T >
  12. struct Node
  13. {
  14.     friend class List<T>;
  15.  
  16.     Node()
  17.     {
  18.         next = nullptr;
  19.     }
  20.  
  21.     explicit Node ( const T & element )
  22.     {
  23.         value = element;
  24.         next = nullptr;
  25.     }
  26.  
  27.     T value;
  28.     Node<T> * next;
  29. };
  30.  
  31. template < typename T >
  32. class List{
  33.  
  34.  
  35. private :
  36.     Node<T> * firstElement;
  37.     int size;
  38.  
  39. public:
  40.     List()
  41.     {
  42.         size = 0;
  43.         firstElement = nullptr;
  44.     }
  45.  
  46.     explicit List( const T & element )
  47.     {
  48.         size = 1;
  49.         firstElement = new Node<T>(element);
  50.         firstElement->next = nullptr;
  51.     }
  52.  
  53.     void AddElement( const T & element )
  54.     {
  55.         auto * iter = firstElement;
  56.         while ( iter->next != nullptr ){
  57.             iter = iter->next;
  58.         }
  59.  
  60.         iter->next = new Node<T> (element);
  61.     }
  62.  
  63.     friend ostream & operator <<( ostream & os , List<T> & l )
  64.     {
  65.         if( l.size == 0 ){
  66.             return os;
  67.         }
  68.  
  69.         auto * iter = l.firstElement;
  70.  
  71.         while(iter->next != nullptr)
  72.         {
  73.             os << iter->value << ",";
  74.             iter = iter->next;
  75.         }
  76.         os << iter->value;
  77.         return os;
  78.     }
  79. };
  80.  
  81. int main()
  82. {
  83.     List<int> l(5 );
  84.     l.AddElement(6);
  85.     cout << l << endl ;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment