文章目录

  • ==**栈接口见 [算法开启小码农栈血脉](https://blog.csdn.net/diandengren/article/details/121055584?spm=1001.2014.3001.5501)**==
  • 用栈实现队列
    • 题目
      • 队结构体
      • 队初始化
      • 入“队”
      • 出“队”并取出队元素
      • 返回队头
      • 判断队空
      • 队列销毁
    • 队列代码(接口代码去我之前文章取) [算法开启小码农栈血脉](https://blog.csdn.net/diandengren/article/details/121055584?spm=1001.2014.3001.5501)

栈接口见 算法开启小码农栈血脉

用栈实现队列

题目

队结构体

typedef struct {ST PushST;//入队栈ST PopST;//出队栈
} MyQueue;

队初始化

MyQueue* myQueueCreate() {MyQueue* q = (MyQueue*)malloc(sizeof(MyQueue));StackInit(&q->PushST);//初始化入队栈StackInit(&q->PopST);//初始化出队栈return q;
}

入“队”

void myQueuePush(MyQueue* obj, int x) {StackPush(&obj->PushST,x);
}

出“队”并取出队元素

int myQueuePop(MyQueue* obj) {//如果出队栈为空就从入队栈里面全导过来if(StackEmpty(&obj->PopST)){//导数据while(!StackEmpty(&obj->PushST)){//入队栈栈顶元素拿出来给出队栈StackPush(&obj->PopST,StackTop(&obj->PushST));//栈把入队栈的栈顶元素pop掉StackPop(&obj->PushST);}}//这时就说明都倒完了,所以开始pop掉出队栈元素int tmp = StackTop(&obj->PopST);StackPop(&obj->PopST);return tmp;
}

返回队头

int myQueuePeek(MyQueue* obj) {//如果出队栈为空就从入队栈里面全导过来if(StackEmpty(&obj->PopST)){//导数据while(!StackEmpty(&obj->PushST)){//入队栈栈顶元素拿出来给出队栈StackPush(&obj->PopST,StackTop(&obj->PushST));//栈把入队栈的栈顶元素pop掉StackPop(&obj->PushST);}}//就是出队函数那样只取队头而已return StackTop(&obj->PopST);
}

判断队空

bool myQueueEmpty(MyQueue* obj) {return StackEmpty(&obj->PushST) && StackEmpty(&obj->PopST);
}

队列销毁

void myQueueFree(MyQueue* obj) {StackDestroy(&obj->PushST);StackDestroy(&obj->PopST);free(obj);
}

队列代码(接口代码去我之前文章取) 算法开启小码农栈血脉


typedef struct {ST PushST;//入队栈ST PopST;//出队栈
} MyQueue;MyQueue* myQueueCreate() {MyQueue* q = (MyQueue*)malloc(sizeof(MyQueue));StackInit(&q->PushST);//初始化入队栈StackInit(&q->PopST);//初始化出队栈return q;
}void myQueuePush(MyQueue* obj, int x) {StackPush(&obj->PushST,x);
}int myQueuePop(MyQueue* obj) {//如果出队栈为空就从入队栈里面全导过来if(StackEmpty(&obj->PopST)){//导数据while(!StackEmpty(&obj->PushST)){//入队栈栈顶元素拿出来给出队栈StackPush(&obj->PopST,StackTop(&obj->PushST));//栈把入队栈的栈顶元素pop掉StackPop(&obj->PushST);}}//这时就说明都倒完了,所以开始pop掉出队栈元素int tmp = StackTop(&obj->PopST);StackPop(&obj->PopST);return tmp;
}int myQueuePeek(MyQueue* obj) {//如果出队栈为空就从入队栈里面全导过来if(StackEmpty(&obj->PopST)){//导数据while(!StackEmpty(&obj->PushST)){//入队栈栈顶元素拿出来给出队栈StackPush(&obj->PopST,StackTop(&obj->PushST));//栈把入队栈的栈顶元素pop掉StackPop(&obj->PushST);}}//就是出队函数那样只取队头而已return StackTop(&obj->PopST);
}bool myQueueEmpty(MyQueue* obj) {return StackEmpty(&obj->PushST) && StackEmpty(&obj->PopST);
}void myQueueFree(MyQueue* obj) {StackDestroy(&obj->PushST);StackDestroy(&obj->PopST);free(obj);
}

算法开启栈转队列武魂相关推荐

  1. 算法总结——栈与队列

    算法总结--栈与队列 一.栈与队列理论基础 用栈实现队列 Python版本 三.用队列实现栈 Python版本 四.有效的括号 Python版本 五.删除字符串中的所有相邻重复项 Python版本 六 ...

  2. 数据结构与算法(2)——栈和队列

    前言:题图无关,只是好看,接下来就来复习一下栈和队列的相关知识 前序文章: 数据结构与算法(1)--数组与链表(https://www.jianshu.com/p/7b93b3570875) 栈 什么 ...

  3. 数据结构与算法--利用栈实现队列

    利用栈实现队列 上一节中说明了栈的特点 后进先出,我们用数组的方式实现了栈的基本操作api,因此我们对栈的操作是不考虑排序的,每个api的操作基本都是O(1)的世界,因为不考虑顺序,所以找最大,最小值 ...

  4. 【数据结构与算法】栈与队列

    栈 一.什么是栈? 1.后进者先出,先进者后出,这就是典型的"栈"结构. 2.从栈的操作特性来看,是一种"操作受限"的线性表,只允许在端插入和删除数据. 二.为 ...

  5. 栈的输出_算法:栈和队列题目集合(一)

    前言 栈和队列是算法的一个基本的知识点之一.这篇文章主要介绍三道有关栈和队列的算法题.因为篇幅所限,只介绍push和pop这两种方法的实现 用栈实现队列 用队列实现栈 循环队列的实现 用栈实现队列 入 ...

  6. 数据结构与算法之栈与队列:java实现

    闻理似悟,遇境则迷!!! 栈与队列来说也算是一种特殊的线性表,栈的特点是后进先出,队列的特点是先进先出. 栈 栈的特点是后进先出,栈的操作只有出栈和入栈(也叫压栈),除此之外,还包含栈顶与栈底的指向以 ...

  7. 【数据结构与算法】栈与队列【C语言版】

    目录 3.1 栈和队列的定义和特点 3.2 栈.队列与一般线性表的区别 3.3 栈的表示和操作的实现 顺序栈与顺序表 ================= 顺序栈的表示 顺序栈初始化 判断顺序栈是否为空 ...

  8. 用JS描述的数据结构及算法表示——栈和队列(基础版)

    前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...

  9. 数据结构与算法(二) 栈与队列(代码示例)

    数据结构与算法 栈与队列 1. 数组和链表实现栈 2. 用O(1)的时间复杂度求栈中的最小元素 3. 链表和数组实现队列 4. 用两个栈模拟队列操作 1. 数组和链表实现栈 链表的方式: /*** 描 ...

最新文章

  1. LeetCode 613. Shortest Distance in a Line --SQL
  2. Wallop下蛋送邀请。
  3. [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...
  4. 认真学习系列:Linux原理——《趣谈linux》学习笔记
  5. 浅谈 Mybatis 中的 ${ } 和 #{ }的区别
  6. JAVA_JDK下载与安装教程(小白)
  7. 计算机如何清理c盘,C盘清理,教您怎么给电脑C盘进行清理
  8. C#网络编程之基础语法 网络流(NetworkStream) 文本流(Stream) 文件流(Filestream )
  9. 地级市面板数据(2000-2019)四:失业+进出口+工资+规上企业+房地产等(stata版)
  10. MFC---List Control的用法总结
  11. 程序员如何防止加班猝死
  12. 某笔试的一道简单题目
  13. 视频教程-图解Python编程神器Jupyter Notebook-Python
  14. sql中的date的使用
  15. 服务器里那个文件是地图的爆率,关于普通图爆率研究
  16. 我这大半年——求职理论篇
  17. Google Earth Engine(gee)中的Geometry
  18. CCNA思科的一些基础知识
  19. 美国国家标准与技术研究院(NIST)
  20. 基于springdata JPA的dao层接口实现

热门文章

  1. “双月”数据集的生成
  2. 有参构造方法的作用和无参构造方法的作用
  3. 在 Amazon SageMaker 上玩转 Stable Diffusion: 基于 Dreambooth 的模型微调
  4. 给未来写封信app服务器维护中,‎App Store 上的“给未来写封信”
  5. java为Word插入图片水印
  6. CV领域论文查找方法
  7. 记一次jenkins 构建go项目经历
  8. Noip2011 Day1 T1 铺地毯(模拟)
  9. Onvif协议学习:14、球机云台控制PTZ
  10. 名片识别信息分类python_基于Python的智能名片识别接口调用代码实例