Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename T>
- class queue
- {
- public:
- queue(const initializer_list<T>& values)
- {
- for (auto val : values)
- enqueue(val);
- }
- void enqueue(const T& val)
- {
- if (last)
- {
- last->next = new node(val);
- last = last->next;
- }
- else
- {
- start = new node(val);
- last = start;
- }
- ++nodes;
- //if (start)
- //{
- // node* temp = start;
- // while (temp->next) //scorro tutta la lista fino ad arrivare all'ultimo nodo
- // temp = temp->next;
- // // sono arrivato all'ultimo nodo
- // temp->next = new node(val);
- // end = temp->next;
- //}
- //else
- // start = new node(val);
- }
- void dequeue()
- {
- if (!start)
- return;
- node* temp = start;
- while (temp->next) //scorro tutta la lista fino ad arrivare all'ultimo nodo
- {
- last = temp;
- temp = temp->next;
- }
- delete temp;
- last->next = nullptr;
- --nodes;
- }
- void print()
- {
- node* temp = start;
- while (temp)
- {
- cout << temp->info << " ";
- temp = temp->next;
- }
- cout << endl;
- }
- ~queue()
- {
- node* temp = start;
- while (nodes > 0)
- {
- dequeue();
- --nodes;
- }
- }
- private:
- struct node
- {
- node* next;
- T info;
- node(T val)
- {
- next = nullptr;
- info = val;
- }
- };
- node* start = nullptr;
- node* last = nullptr;
- int nodes = 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement