思路:用一个栈起到过渡的作用。先将队列中的元素放入栈中,然后初始化队列,再将元素从栈中取出放到初始化的队列中。
代码:
#include <iostream> #include <malloc.h> #include <string.h> using namespace std; const int maxn=10; typedef struct { char data[maxn]; int front,rear; }Queue; typedef struct { char data[maxn]; int top; }Stack; void Reverse(Queue &q,Stack &s) { s.top=-1; while(q.front!=q.rear) { s.data[++s.top]=q.data[(q.front+1)%maxn]; q.front=(q.front+1)%maxn; } q.front=q.rear=-1; while(s.top!=-1) { q.data[(q.rear+1)%maxn]=s.data[s.top--]; q.rear=(q.rear+1)%maxn; } } int main() { Queue q;Stack s; q.data[8]=‘a‘; q.data[9]=‘b‘; q.data[0]=‘c‘; q.data[1]=‘d‘; q.data[2]=‘e‘; q.data[3]=‘f‘; q.front=7; q.rear=3; Reverse(q,s); for(int i=0;i<=5;i++) cout<<q.data[i]<<endl; return 0; }
原文:http://blog.csdn.net/sr_19930829/article/details/22984905