C++实现栈数据结构

本文介绍了一个简单的C++栈类CStack的实现方法,并通过示例演示了如何使用该类进行数据的压栈和出栈操作。文章还提供了完整的源代码供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ,如需转载请自行联系原作者






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值