当前位置: 首页 > 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.zskr.cn/news/1313185.html

相关文章:

  • Cyber​​ RT 开发人员工具
  • [实践|鸿蒙] 从HAP到APP:DevEco Studio编译构建全流程实战解析
  • 【LeetCode刷题日记】112.递归中的「减法思维」:一题带你打通二叉树路径求和的任督二脉
  • 【中等】数字字符串转换为字母组合的种数-Java:解法二
  • Google Earth Engine(GEE)——run with profiler查看我们所运行程序的描述、计算指标、内存、峰值内存和数量
  • 基于OpenCV与全志T527的嵌入式手势识别:从算法到工程实践
  • 国产多模态大模型:科学计算领域的“新质生产力”
  • 佛山广州佛山五大校区培训哪家好?全日制培训班推荐 - 检测回收中心
  • 【LLM】code agent bench
  • ChatGPT在软件开发中的实战应用:从代码生成到调试的AI助手指南
  • 用TP4056、PW5300和PW2051搞定你的STM32项目供电:从3.7V锂电池到3.3V/5V的完整电路设计
  • Stripe CLI安全最佳实践:如何保护你的API密钥和敏感数据
  • UVM验证中Sequence启动方式详解:从原理到实战避坑指南
  • 2025最权威的AI学术工具实测分析
  • Win11Debloat:终极Windows系统优化指南,三分钟提升电脑性能38%
  • 钦州金条回收银条回收铂金项链回收克拉钻石回收婚嫁首饰回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 如何快速上手ActionView:5分钟完成项目配置和问题创建
  • 3步搭建免费网盘直链解析服务:彻底告别下载限速烦恼
  • 2026届毕业生推荐的十大AI辅助写作方案横评
  • 从业15年网优老兵实话:5G网优工程师发展前景,看完不迷茫
  • 平凉黄金回收白银回收铂金回收钻石回收贵金属回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • Whetstone.chatgpt:简化ChatGPT Function Calling开发的AI Agent框架
  • 模块化电力电子:标准化接口与软件定义如何重塑能源系统设计
  • NotebookLM权限继承链断裂?揭秘Google Cloud IAM Policy Analyzer在NotebookLM上下文中的3类隐性失效场景
  • 告别繁琐组态:用SVG + JavaScript 5分钟为你的工业设备创建可交互HMI组件
  • 上海髋关节置换医院怎么选?从核心维度拆解选型逻辑 - 奔跑123
  • 把 SAP Central Business Configuration 的 Implementation Workspace 搭起来,别把云实施做成另一个 SPRO
  • Loop:让Mac窗口管理变得优雅而高效
  • yutu项目解析:模块化AI开发工具集如何加速LLM应用构建
  • 基于MCP协议的AI求职助手部署与实战指南