当前位置: 首页 > news >正文

用两个栈实现队列-C++

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程https://www.captainai.net/troubleshooter

// 面试题9:用两个栈实现队列 // 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 #include <stack> #include <exception> #include <stdexcept> using namespace std; template <typename T> class CQueue { public: CQueue(void); ~CQueue(void); // 在队列末尾添加一个结点 void appendTail(const T &node); // 删除队列的头结点 T deleteHead(); private: stack<T> stack1; stack<T> stack2; }; template <typename T> CQueue<T>::CQueue(void) { } template <typename T> CQueue<T>::~CQueue(void) { } template <typename T> void CQueue<T>::appendTail(const T &element) { stack1.push(element); } template <typename T> T CQueue<T>::deleteHead() { if (stack2.size() <= 0) { while (stack1.size() > 0) { T &data = stack1.top(); stack1.pop(); stack2.push(data); } } if (stack2.size() == 0) throw new logic_error("queue is empty"); T head = stack2.top(); stack2.pop(); return head; } // ====================测试代码==================== void Test(char actual, char expected) { if (actual == expected) printf("Test passed.\n"); else printf("Test failed.\n"); } int main(int argc, char *argv[]) { CQueue<char> queue; queue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c'); char head = queue.deleteHead(); Test(head, 'a'); head = queue.deleteHead(); Test(head, 'b'); queue.appendTail('d'); head = queue.deleteHead(); Test(head, 'c'); queue.appendTail('e'); head = queue.deleteHead(); Test(head, 'd'); head = queue.deleteHead(); Test(head, 'e'); return 0; } // ------ Output ------ /* Test passed. Test passed. Test passed. Test passed. Test passed. */
http://www.jsqmd.com/news/841377/

相关文章:

  • 盘锦黄金回收白银回收铂金回收钻石回收贵金属回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 程序员的“中年危机”:我靠这6个方法成功转型
  • 小红勇闯地下城【牛客tracker 每日一题】
  • 【中等】数字字符串转换为字母组合的种数-Java:解法二
  • 基于OpenCV与全志T527的嵌入式手势识别:从算法到工程实践
  • 佛山广州佛山五大校区培训哪家好?全日制培训班推荐 - 检测回收中心
  • 零基础也能玩转Switch破解:TegraRcmGUI图形化注入工具完全指南
  • 国产多模态大模型:科学计算领域的“新质生产力”
  • 钦州黄金手镯回收纯银回收白金回收50分钻石回收二手钻石回收高价多少钱一克同城价格查询上门上门估价闲置变现转让靠谱权威排行榜 - 检测回收中心
  • 给 AI加长期记忆:再也不用每次重新交接项目了
  • 【LLM】code agent bench
  • 钦州黄金项链回收老银器回收旧铂金回收1克拉钻石回收二手铂金回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 用TP4056、PW5300和PW2051搞定你的STM32项目供电:从3.7V锂电池到3.3V/5V的完整电路设计
  • Stripe CLI安全最佳实践:如何保护你的API密钥和敏感数据
  • kube-lego深度探索:HTTP-01挑战实现原理与源码分析
  • Namshi/JOSE API参考手册:所有签名算法的详细说明
  • 平顶山黄金戒指回收白银首饰回收高价铂金回收品牌钻戒回收二手白银回收高价多少钱一克同城价格查询上门上门估价闲置变现转让靠谱权威排行榜 - 检测回收中心
  • 佛山广州高职高考封闭班培训哪家好?全日制培训班推荐 - 检测回收中心
  • Win11Debloat:终极Windows系统优化指南,三分钟提升电脑性能38%
  • VNC实战:解锁VMware虚拟机远程桌面访问的完整配置指南
  • 钦州金条回收银条回收铂金项链回收克拉钻石回收婚嫁首饰回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 如何快速上手ActionView:5分钟完成项目配置和问题创建
  • 3步掌握Demucs-GUI:新手快速入门音乐分离工具
  • 3步搭建免费网盘直链解析服务:彻底告别下载限速烦恼
  • 2026届毕业生推荐的十大AI辅助写作方案横评
  • AI智能体开发框架agentseed:模块化设计与生产级实践指南
  • 从测试系统走向生产系统,SAP S/4HANA Cloud Public Edition 生产系统初始化落地指南
  • 平凉黄金回收白银回收铂金回收钻石回收贵金属回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • ARM伪代码解析与核心辅助函数详解
  • 从业15年网优老兵实话:5G网优工程师发展前景,看完不迷茫