您的位置:首页 > 编程语言 > C语言/C++

堆栈的简单C++实现

2008-12-19 21:33 483 查看

堆栈的简单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设计模式来实现的,并将用于实现的容器放入了模板的参数,以方便你用vector和list,来替代默认的deque。



















write by 九天雁翎(JTianLing) --
blog.csdn.net/vagrxie
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: