广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中用栈+队列实现队列中的元素逆置
  • 619
分享到

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

2024-04-02 19:04:59 619人浏览 泡泡鱼
摘要

下面举例代码: 提到的Q是一个队列,S是一个空栈,实现将队列中的元素逆置的算法 #include<stdio.h> #define MaxSize 10 typedef

下面举例代码:

提到的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语言中用栈+队列实现队列中的元素逆置的文章就介绍到这了,更多相关用栈+队列实现队列中的元素逆置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言中用栈+队列实现队列中的元素逆置

本文链接: https://www.lsjlt.com/news/138812.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中用栈+队列实现队列中的元素逆置
    下面举例代码: 提到的Q是一个队列,S是一个空栈,实现将队列中的元素逆置的算法 #include<stdio.h> #define MaxSize 10 typedef ...
    99+
    2022-11-13
  • C语言循环队列与用队列实现栈问题解析
    目录循环队列题目描述题目链接思路分析代码实现用队列实现栈题目描述题目链接思路分析代码实现循环队列 循环队列: 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并...
    99+
    2022-11-13
  • C语言怎么实现栈和队列
    本文小编为大家详细介绍“C语言怎么实现栈和队列”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么实现栈和队列”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是栈栈:一种特殊的线性表,其只允许在固定的一端...
    99+
    2023-06-30
  • C语言栈和队列如何实现
    这篇文章主要讲解了“C语言栈和队列如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言栈和队列如何实现”吧!一、栈与队列以及双端队列的概念1.1 栈的概念及结构栈:一种特殊的线性表,...
    99+
    2023-06-30
  • C语言栈与队列相互实现详解
    目录一、本章重点二、队列实现栈三、栈实现队列四、解题思路总结一、本章重点 用两个队列实现栈用两个栈实现队列解题思路总结 二、队列实现栈  我们有两个队列:  ...
    99+
    2022-11-13
  • C语言栈与队列怎么相互实现
    本篇内容介绍了“C语言栈与队列怎么相互实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、本章重点用两个队列实现栈用两个栈实现队列解题思路...
    99+
    2023-06-29
  • C语言用栈模拟实现队列问题详解
    目录题目描述题目链接思路分析代码实现题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)。 你只能使用标准的栈操作...
    99+
    2022-11-13
  • C语言详解链式队列与循环队列的实现
    目录队列的实现链式队列链式队列的定义链式队列的实现循环队列循环队列的定义循环队列的实现队列的实现 队列是一种先进先出(First in First Out)的线性表,简称FIFO。与...
    99+
    2022-11-13
  • C语言分别实现栈和队列详解流程
    目录什么是栈栈的结构图示栈的实现创建栈的结构体初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空栈的销毁什么是队列?队列的实现创建队列结构体初始化队列队尾入队列队头出队列...
    99+
    2022-11-13
  • C语言超详细讲解栈与队列实现实例
    目录1.思考-12.栈基本操作的实现2.1 初始化栈2.2 入栈2.3 出栈2.4 获取栈顶数据2.5 获取栈中有效元素个数2.6 判断栈是否为空2.7 销毁栈3.测试3.1 测试3...
    99+
    2022-11-13
  • C语言 队列的实现全解析
    目录队列的实现基本概念创建结构体初始化结构体销毁队列结构体入队出队判断队列是否为空访问对头的值访问队尾的值返回队列的长度Queue.hQueue.cTest.c队列的实现 基本概念 ...
    99+
    2022-11-13
  • C语言数据结构进阶之栈和队列的实现
    目录栈的实现:一、栈的概念和性质二、栈的实现思路三、栈的相关变量内存布局图四、栈的初始化和销毁五、栈的接口实现:1.入栈2.出栈3.获取栈顶的数据4.获取栈的元素个数5.判断栈是否为...
    99+
    2022-11-12
  • C语言数据结构之栈与队列的相互实现
    目录一、用对列实现栈代码实现二、用栈实现队列代码实现一、用对列实现栈 题干要求: 细节分析:队列是先进先出; 要实现的栈是先进后出。 解题思路:假设:先用一个队列储存数据 N 个,...
    99+
    2022-11-13
  • Python中怎么用队列实现栈
    这篇文章给大家介绍Python中怎么用队列实现栈,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。题目:使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素e...
    99+
    2023-06-02
  • Python中如何用栈实现队列
    Python中如何用栈实现队列,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。用栈实现队列题目:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的...
    99+
    2023-06-02
  • C语言中队列的示例分析
    这篇文章将为大家详细讲解有关C语言中队列的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、队列(Queue)0x00 队列的概念 概念:① 队列只允许在一端进行插入数据操作,在另一端进...
    99+
    2023-06-29
  • C语言实现队列的示例详解
    目录前言一. 什么是队列二. 使用什么来实现栈三. 队列的实现3.1头文件3.2 函数的实现四.完整代码前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链表,双向循环链...
    99+
    2022-11-13
  • C语言数据结构之栈与队列怎么相互实现
    本篇内容介绍了“C语言数据结构之栈与队列怎么相互实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、用对列实现栈题干要求:细节分析:队列是...
    99+
    2023-07-02
  • C语言怎么利用栈和队列实现回文检测功能
    本文小编为大家详细介绍“C语言怎么利用栈和队列实现回文检测功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么利用栈和队列实现回文检测功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。具体代码如下:#i...
    99+
    2023-06-16
  • C利用语言实现数据结构之队列
    目录一、链队列二、链队的表示三、链队的基本操作1. 链队的初始化2. 链队的销毁3. 入队4. 出队四、顺序队列五、循环队列1. 初始化2. 求队列长度3. 入队4. 出队 前言: ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作