九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

堆栈的简单C++实现

 

堆栈的简单C++实现

write by 九天雁翎(JTianLing) --
blog.csdn.net/vagrxie

 头文件:

 1 #ifndef __STACK_H__
 2 #define
__STACK_H__

 3 #include
<iostream> 
 4 #include
<vector>
 5 using namespace std;
 6
 7 template<typename T>
 8 class CStack
 9 {
10 public:
11     CStack() { }
12     ~CStack() { }
13
14     size_t empty()
15     {
16         return miDataVec.empty();
17     }
18
19     size_t size()
20     {
21         return miDataVec.size();
22     }
23
24     void pop()
25     {
26         miDataVec.pop_back();
27     }
28
29     T& top()
30     {
31         return miDataVec.back();
32     }
33
34     const T& top() const
35     {
36         return miDataVec.back();
37     }
38
39     void push(const T&
aItem)
40     {
41         miDataVec.push_back(aItem);
42     }
43 private:
44     vector<T>
miDataVec;
45
46 };
47
48
49
50
51
52
53 #endif
54

 

测试程序:

 1 #include <stdio.h>
 2 #include
<stdlib.h>
 3 #include
<iostream> 
 4 #include
"stack.h"
 5 using namespace std;
 6
 7
 8 int main(int argc, char*
argv[])
 9 {
10     CStack<int> loStack;
11
12     loStack.push(1);
13     cout
<<loStack.top() <<" ";
14
15     loStack.push(2);
16     cout
<<loStack.top() <<" ";
17
18     loStack.push(1);
19     cout
<<loStack.top() <<" ";
20
21     loStack.push(2);
22     cout
<<loStack.top() <<" ";
23
24     loStack.push(3);
25     cout
<<loStack.top() <<" ";
26     
27     loStack.push(4);
28     cout
<<loStack.top() <<" ";
29
30     cout
<<endl;
31
32     while(loStack.size() != 0)
33     {
34         cout
<<loStack.top() <<" ";
35         loStack.pop();
36     }
37
38     cout
<<endl;
39
40     exit(0);
41 }
42

 

 

这里顺便说明一下,这个实现仅仅是为了说明问题。

C++中标准的stack实现是通过adaptor设计模式来实现的,并将用于实现的容器放入了模板的参数,以方便你用vectorlist,来替代默认的deque

 

 

 

 

 

 

 

 

 

write by 九天雁翎(JTianLing) --
blog.csdn.net/vagrxie

 

分类:  算法 
标签:  C++  堆栈 

Posted By 九天雁翎 at 九天雁翎的博客 on 2008年12月19日

前一篇: 堆栈的应用(1) 平衡符号 C++实现 后一篇: 堆栈的应用(2) 中缀算术表达式到后缀(逆波兰记法reverse polish notation)的转换及其计算 C++实现