剑指offer 面试题9:用两个栈实现队列【C++版本】
发布日期:2021-06-29 17:13:52
浏览次数:2
分类:技术文章
本文共 1704 字,大约阅读时间需要 5 分钟。
题目总结与代码归档:
GitHub代码路径:
面试题9
用两个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列的头部删除节
templateclass CQueue{ public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead();private: stack stack1; stack stack2;};
解题思路
一个队列中包含两个栈stack1和stack2,操作两个“先进后出"的栈实现一个”先进先出"的队列
代码实现
09 用两个栈实现队列.h
#pragma once#include#include using namespace std;template class CQueue{ public: CQueue(void); ~CQueue(void); // 在队列末尾添加一个结点 void appendTail(const T& node); // 删除队列的头结点 T deleteHead();private: stack stack1; stack stack2;};template CQueue ::CQueue(void){ }template CQueue ::~CQueue(void){ }template void CQueue ::appendTail(const T& node){ stack1.push(node); // 尾部添加 直接 stack1 入栈}template T CQueue ::deleteHead(){ // 删除头部 需分情况处理 if (stack2.size() <= 0) // stack2 中没有数据 需要从 stack1 依次出栈元素并压入stack2中 { while (stack1.size() > 0) { T& data = stack1.top(); stack1.pop(); stack2.push(data); } } if (stack2.size() == 0) //上述处理后 还未空 说明 本身为空 throw new exception("queue is empty"); T head = stack2.top(); stack2.pop(); return head;}
09 用两个栈实现队列.cpp
#include "09 用两个栈实现队列.h"#includeint main(int argc, char* argv[]){ CQueue queue; queue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c'); char head = queue.deleteHead(); cout << head << endl; queue.appendTail('d'); head = queue.deleteHead(); cout << head << endl; queue.appendTail('e'); head = queue.deleteHead(); cout << head << endl; head = queue.deleteHead(); cout << head << endl; system("pause"); return 0;}
GitHub链接:
CSDN首页: 欢迎大家来一起交流学习
转载地址:https://blog.csdn.net/leacock1991/article/details/107624432 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月09日 08时55分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
70%求职者因此被拒,你还不避开这些“雷区”?!
2019-04-29
办法不在多,有用就行!用Dropout解决过度拟合问题
2019-04-29
色情演员识别?绝对是人脸识别最糟糕的应用……
2019-04-29
让强化学习逃离“乏味区域陷阱”,试着加点噪音吧!
2019-04-29
超详细Spring Boot面试问题集锦,死角一个不留!
2019-04-29
10个业余时间可完成的项目,助你飞速提升编码能力!
2019-04-29
网络爬虫初涉——用python爬取网络小说
2019-04-29
Pycharm+tensorflow dropout 学习(三)
2019-04-29
Pycharm+tensorflow CNN 学习(四)
2019-04-29
用python暴力破解压缩包密码
2019-04-29
基于OpenCV 将图片进行预处理,转变为MNIST图片格式
2019-04-29
PyCharm+Tensorflow CNN调用训练好的模型进行预测 (五)
2019-04-29
物联网平台Node-red初涉——访问搭建的简易服务器
2019-04-29
2020-10-27
2019-04-29
OpenCV+python识别并打印HSV颜色
2019-04-29
2021-03-29
2019-04-29
网络攻击与防御--引言
2019-04-29
网络攻击与防御--网络协议漏洞
2019-04-29
sql注入: 判断注入点类型
2019-04-29
千人千面Elasticsearch实战学习笔记
2019-04-29