队列逆置

来源:互联网 发布:王兀 中国好歌曲 知乎 编辑:程序博客网 时间:2024/05/10 05:35

思路:用一个栈起到过渡的作用。先将队列中的元素放入栈中,然后初始化队列,再将元素从栈中取出放到初始化的队列中。

代码:

#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;}


 

0 0
原创粉丝点击