码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构——栈的操作

时间:2015-04-27 19:58:59      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

栈是先进后出的,队列是先进先出的。

栈顶在上面,栈是向上生长的,每次数据操作是压栈,最后的数据元素指向栈顶。

实例:用两个栈实现队列

题目:用两个栈实现一个队列,队列的声明如下,请实现他的连个函数,分别完成在队列尾部插入结点和在队列头部删除结点的功能。

 1 template<typename T>class CQueue
 2 {
 3 public:
 4     CQueue(void);
 5     ~CQueue(void);
 6     void appendTail(const T& node);
 7     T deleteHead();
 8 private:
 9     stack<T>stack1 ;
10     stack<T>stack2;
11 };
12 template<typename T>
13 void CQueue<T>::appendTail(const T& node)
14 {
15     stack1.push(node);
16 }
17 template<typename T>
18 T CQueue<T>::deleteHead()
19 {
20     if (stack2.size()<=0)
21     {
22         while (stack1.size()>0)
23         {
24             T tmp = stack1.top();
25             stack2.push(tmp);
26             stack1.pop();
27         }
28     }
29     if (stack2.size()==0)
30     {
31         throw std::exception("Empty Queue.");
32     }
33     T head = stack2.top();
34     stack2.pop();
35     return head;
36 }

思路提示:将一个栈中的结点依次出栈,然后压入到另一个栈中,构成队列,如果向删除头部结点,则只需要将新栈中栈顶出栈即可。

数据结构——栈的操作

标签:

原文地址:http://www.cnblogs.com/jingliming/p/4451849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!