首页 > 编程语言 > 详细

C++实现一个简单的双栈队列

时间:2020-01-20 21:55:25      阅读:146      评论:0      收藏:0      [点我收藏+]

直接上代码, 解释有空补上, 随手写的, 有问题欢迎指出

 1 #include <stack>
 2 
 3 template <typename T>
 4 class CStkQueue
 5 {
 6 public:
 7   T queuePop();
 8   void queuePush(T value);
 9   size_t queueSize();
10 
11 private:
12   std::stack<T> std_stack_push;
13   std::stack<T> std_stack_pop;
14 };
15 
16 
17 template <typename T>
18 T CStkQueue<T>::queuePop()
19 {
20   if (!std_stack_pop.empty())
21   {
22     T temp = std_stack_pop.top();
23     std_stack_pop.pop();
24     return temp;
25   }
26 
27   while (std_stack_push.size() != 1)
28   {
29     std_stack_pop.push(std_stack_push.top());
30     std_stack_push.pop();
31   }
32 
33   T temp = std_stack_push.top();
34   std_stack_push.pop();
35   return temp;
36 }
37 
38 template <typename T>
39 void CStkQueue<T>::queuePush(T value)
40 {
41   if (!std_stack_pop.empty())
42   {
43     std_stack_push.push(std_stack_pop.top());
44     std_stack_pop.pop();
45   }
46   
47   std_stack_push.push(value);
48 }
49 
50 template <typename T>
51 size_t CStkQueue<T>::queueSize()
52 {
53   return (std_stack_push.size() + std_stack_pop.size());
54 }

简单测试一下

技术分享图片

技术分享图片

C++实现一个简单的双栈队列

原文:https://www.cnblogs.com/TssiNG-Z/p/12219345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!