队列表示非常任意。我会使用双端队列:
#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);
for (auto i : queue)
std::cout << i << " ";
} else
{
std::cout << "invalid input\n";
}
}
Run Code Online (Sandbox Code Playgroud)
在 coliru 上观看直播
如果您所说的队列仅指后进先出访问,那么它会变成:
#include <queue>
#include <algorithm>
#include <iostream>
int main()
{
std::queue<int> queue, stash;
for (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";
}
}
Run Code Online (Sandbox Code Playgroud)
也可以在 Coliru 上观看直播
| 归档时间: |
|
| 查看次数: |
41839 次 |
| 最近记录: |