C++ Find Certain Element in Queue -


the idea simple , task needs queue, please dont suggest other methods.

i need have full queue, example 5 elements of (5,4,3,2,1) , user has enter position of element want moved front. e.g, position 3, element 2. new queue be: 2,5,4,3,1...

i have been working on long time isnt hit wall ask help. nudge me working in right direction again :) thanks

queue representations pretty arbitrary. i'd use deque:

#include <deque> #include <algorithm> #include <iostream>  int main() {     std::deque<int> queue { 5, 4, 3, 2, 1 };     auto b = begin(queue);      std::cout << "which element? ";     int n;     if (std::cin >> n && n > 0 && size_t(n) <= queue.size())     {         std::rotate(b, b+n-1, b+n);         (auto : queue)             std::cout << << " ";     } else     {         std::cout << "invalid input\n";     } } 

see live on coliru

if queue mean lifo-access only, it'd become:

#include <queue> #include <algorithm> #include <iostream>   int main() {     std::queue<int> queue, stash;     (int i=1; i<=5; ++i)         queue.push(i);      std::cout << "which element? ";     int n;     if (std::cin >> n && n > 0 && size_t(n) <= queue.size())     {         while (--n)             stash.push(queue.front()), queue.pop();          if (!stash.empty())         {             int select = stash.front();             stash.pop();              while (!stash.empty())                 queue.push(stash.front()), stash.pop();              queue.push(select);         }          while (!queue.empty())         {             std::cout << queue.front() << " ";             queue.pop();         }     } else     {         std::cout << "invalid input\n";     }  } 

see live on coliru too


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -