Advertisement
Guest User

Untitled

a guest
Apr 26th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. template <typename T>
  2.         class queue
  3.         {
  4.         public:
  5.             queue(const initializer_list<T>& values)
  6.             {
  7.                 for (auto val : values)
  8.                     enqueue(val);
  9.             }
  10.  
  11.             void enqueue(const T& val)
  12.             {
  13.                 if (last)
  14.                 {
  15.                     last->next = new node(val);
  16.                     last = last->next;
  17.                 }
  18.                 else
  19.                 {
  20.                     start = new node(val);
  21.                     last = start;
  22.                 }
  23.  
  24.                 ++nodes;
  25.  
  26.                 //if (start)
  27.                 //{
  28.                 //  node* temp = start;
  29.                 //  while (temp->next) //scorro tutta la lista fino ad arrivare all'ultimo nodo
  30.                 //      temp = temp->next;
  31.  
  32.                 //  // sono arrivato all'ultimo nodo
  33.                 //  temp->next = new node(val);
  34.                 //  end = temp->next;
  35.                 //}
  36.                 //else
  37.                 //  start = new node(val);
  38.             }
  39.  
  40.             void dequeue()
  41.             {
  42.                 if (!start)
  43.                     return;
  44.  
  45.                 node* temp = start;
  46.                 while (temp->next) //scorro tutta la lista fino ad arrivare all'ultimo nodo
  47.                 {
  48.                     last = temp;
  49.                     temp = temp->next;
  50.                 }
  51.  
  52.                 delete temp;
  53.                 last->next = nullptr;
  54.                 --nodes;
  55.             }
  56.  
  57.             void print()
  58.             {
  59.                 node* temp = start;
  60.                 while (temp)
  61.                 {
  62.                     cout << temp->info << " ";
  63.                     temp = temp->next;
  64.                 }
  65.  
  66.                 cout << endl;
  67.             }
  68.  
  69.             ~queue()
  70.             {
  71.                 node* temp = start;
  72.                 while (nodes > 0)
  73.                 {
  74.                     dequeue();
  75.                     --nodes;
  76.                 }
  77.             }
  78.  
  79.         private:
  80.             struct node
  81.             {
  82.                 node* next;
  83.                 T info;
  84.  
  85.                 node(T val)
  86.                 {
  87.                     next = nullptr;
  88.                     info = val;
  89.                 }
  90.             };
  91.  
  92.             node* start = nullptr;
  93.             node* last = nullptr;
  94.             int nodes = 0;
  95.         };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement