C语言中用栈+队列实现队列中的元素逆置

C语言中用栈+队列实现队列中的元素逆置

下面举例代码:

提到的Q是一个队列,S是一个空栈,实现将队列中的元素逆置的算法

#include<stdio.h> #define MaxSize 10 typedef int ElemType; typedef struct{     ElemType data[MaxSize];     int front,rear; }Queue; typedef struct{     ElemType data[MaxSize];     int top; }SqStack; void InitStack(SqStack &S) //初始化栈 {     S.top = -1; } bool EmptyStack(SqStack S) //判断栈空 {     if(S.top == -1)         return true;     else         return false; } bool OverflowStack(SqStack S) //判断栈是否满 {     if(S.top == MaxSize-1)         return true;     else         return false; } bool Push(SqStack &S,ElemType x) //进栈 {     if(OverflowStack(S))         return false;     S.data[++S.top] = x;     return true; } bool Pop(SqStack &S,ElemType &x) //出栈 {     if(EmptyStack(S))         return false;     x = S.data[S.top--];     return true; } void InitQueue(Queue &Q) //初始化队列 {     Q.front = Q.rear = 0; } bool IsEmpty(Queue Q) //判断队列是否为空 {     if(Q.front == Q.rear)         return true;     else         return false; } bool IsOverflow(Queue Q) //判断队列是否满 {     if((Q.rear+1)%MaxSize == Q.front)         return true;     else         return false; } bool EnQueue(Queue &Q,ElemType x) //进队列 {     if(IsOverflow(Q))         return false;     Q.data[Q.rear] = x;     Q.rear = (Q.rear+1)%MaxSize;     return true; } bool DeQueue(Queue &Q,ElemType &x) //出队列 {     if(IsEmpty(Q))         return false;     x = Q.data[Q.front];     Q.front = (Q.front+1)%MaxSize;     return true; } bool ReverseQueue(Queue &Q)  {     SqStack S;     ElemType x;     InitStack(S);     while(!IsEmpty(Q)) //当队列不为空时,将队列中的元素依次放入栈中     {         DeQueue(Q,x);         Push(S,x);     }     while(!EmptyStack(S)) //当栈不为空时,再将栈中元素依次放入队列中     {         Pop(S,x);         EnQueue(Q,x);     }     return true; } void main() {     Queue Q;     InitQueue(Q);     EnQueue(Q,1);     EnQueue(Q,2);     EnQueue(Q,3);     ReverseQueue(Q);     printf("%d ",Q.data[Q.front]); }

(根据主函数中代码)演示:

例如一开始队列中元素为3 2 1 ->出

1. 将队列中元素依次放到栈中,此时栈:1 2 3 ->出

2. 再将栈中的元素依次放入队列中,此时队列:1 2 3 ->出 

到此这篇关于C语言中用栈+队列实现队列中的元素逆置的文章就介绍到这了,更多相关用栈+队列实现队列中的元素逆置内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    探探语言设置|探探怎么设置语言

    探探语言设置|探探怎么设置语言,,1. 探探怎么设置语言打开探探软件,然后就有消息提示的红点,点开就行了!其实这些软件都是挺简单的操作的,都是

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    区域语言设置|区域语言设置工具

    区域语言设置|区域语言设置工具,,区域语言设置工具你好,大致的方法如下,可以参考:1、按下键盘的windows 图标,再开始菜单中单击“设置”;出现的

    c4d语言设置|c4d汉语设置

    c4d语言设置|c4d汉语设置,,1. c4d汉语设置mac版的C4D是这样的,中文字体是有的,但是是以拼音的形式存在,比如黑体就是ht。中文字体以拼音方式

    电脑宣传语|电脑宣传语言

    电脑宣传语|电脑宣传语言,,1. 电脑宣传语言1.我做好了与你过一辈子的打算,也做好了你随时要走的准备,2.每段青春都会苍老,但我希望记忆里的你

    office语言设置|微软office语言设置

    office语言设置|微软office语言设置,,微软office语言设置一、首先点击桌面左下角“WIN键”。二、弹出选项内点击“所有程序”。三、接着点

    小米设置日语|小米设置日语语言

    小米设置日语|小米设置日语语言,,1. 小米设置日语语言MIUI系统文字目前只支持简体中文、繁体中文、英文、藏文和维吾尔文,不支持日文 2. 小