1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#ifndef __STACK__ #define __STACK__ class CStack
{ int * m_pData;
int m_nCount;
int m_nPos;
public :
CStack( int nLength);
~CStack();
bool isFull();
bool isEmpty();
void push( const int & value);
bool pop( int &value);
}; CStack::CStack( int nLength)
{ //创建栈类时,确定其大小
m_pData = new int [nLength];
memset (m_pData,0,nLength);
m_nPos = -1;
m_nCount = nLength; //用来判断栈是否满
} bool CStack::isFull()
{ return m_nPos == m_nCount-1;
} bool CStack::isEmpty()
{ return m_nPos == -1;
} void CStack::push( const int & value)
{ if (!isFull())
{
m_pData[++m_nPos] = value;
}
} bool CStack::pop( int &value)
{ if (isEmpty()) return false ;
value = m_pData[m_nPos--];
return true ;
} CStack::~CStack() { delete m_pData;
} #endif |
调用方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <iostream> #include "stack.h" int main( int argc, char * argv[])
{ CStack stack = 5;
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
stack.push(6);
int c =0;
stack.pop(c);
cout << c << endl;
stack.pop(c);
cout << c << endl;
stack.pop(c);
cout << c << endl;
stack.pop(c);
cout << c << endl;
stack.pop(c);
cout << c << endl;
stack.pop(c);
cout << c << endl;
getchar ();
} |
本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1966935 ,如需转载请自行联系原作者