栈的一些操作(栈类)

栈类属类(类模板) 的实现:

1 #ifndef STACK_H_INCLUDED
2  #define STACK_H_INCLUDED
3
4 #include <iostream>
5 #include <process.h>
6
7  using namespace std;
8
9 template <class TYPE>
10 class stack
11 {
12 public:
13 //构造函数,设置top指针为空
14 stack();
15 //析构函数
16 ~stack();
17 //将元素obj压栈
18 void push(TYPE obj);
19 //将当前栈顶的元素出栈,要求栈顶指针不能为空
20 void pop();
21 //返回当前栈顶的元素值,要求栈顶指针不能为空
22 TYPE get_top() const;
23 //判断栈是否为空
24 int is_empty() const;
25 private:
26 //栈的数据结构
27 struct NODE空
28 {
29 TYPE data;
30 NODE* link;
31 };
32 NODE* top;
33 };
34
35 //
36 template <class TYPE>
37 stack<TYPE>::stack()
38 {
39 top = NULL;
40 }
41
42 template <class TYPE>
43 stack<TYPE>::~stack()
44 {
45 NODE* tmp;
46 while(top != NULL)
47 {
48 tmp = top;
49 top = top->link;
50 delete tmp;
51 }
52 }
53
54 template <class TYPE>
55 void stack<TYPE>::push(TYPE obj)
56 {
57 NODE* tmp;
58 tmp = new NODE;
59 if(tmp != NULL)
60 {
61 tmp->data = obj;
62 tmp->link = top;
63 top = tmp;
64 }else{
65 cout<<"ERROR: no enough memory.\n";
66 exit(1);
67 }
68 return;
69 }
70
71 template <class TYPE>
72 void stack<TYPE>::pop()
73 {
74 NODE* tmp;
75 if(top == NULL)
76 {
77 cout<<"ERROR: stack empty!\n";
78 exit(1);
79 }else{
80 tmp = top;
81 top = top->link;
82 delete tmp;
83 }
84 return;
85 }
86
87 template <class TYPE>
88 TYPE stack<TYPE>::get_top()
89 {
90 if(top == NULL)
91 {
92 cout<<"ERROR: stack empty!\n";
93 exit(1);
94 }else{
95 return (top->data);
96 }
97 }
98
99 template <class TYPE>
100 int stack<TYPE>::is_empty()
101 {
102 return (top == NULL);
103 }
104
105 #endif // STACK_H_INCLUDED
posted @ 2011-05-08 01:33  elwin  阅读(155)  评论(0)    收藏  举报