千家信息网

C++怎么实现栈

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关C++怎么实现栈,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。/*1.判断栈是否为空2.得到栈的长度3.元素入栈4.元素出栈5.清空栈6
千家信息网最后更新 2026年11月02日C++怎么实现栈

这篇文章将为大家详细讲解有关C++怎么实现栈,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

/*
1.判断栈是否为空
2.得到栈的长度
3.元素入栈
4.元素出栈
5.清空栈
6.栈顶元素
7.栈底元素
*/

栈的空间动态增加:

/*
动态增加空间大小,而不是在初始化时,定义一个非常大的空间
原理:
注意:动态增加大小时,以原大小的两倍配置一块新的空间,
然后将原内容拷贝过来, 并释放原空间,再将指针指向新的空间

*/

#include
using namespace std;
#pragma once

class MyStack
{
public:
MyStack(void);
~MyStack(void);
void push(int elem);
void pop(int& elem);
void clearStack();
bool isEmpty();
int stackLength();
void stackTraverse(bool isFromBottom);//元素的编历
int begin(); //栈顶元素
int back(); //栈底元素
private:
int* m_pBuffer;//栈空间地址
int m_iTop; //指向栈顶,同时确定栈中元素个数
int m_iSize; //栈的初始大小

};


MyStack::MyStack(void)
{
m_iTop = 0;
m_iSize = 5;
m_pBuffer = new int[m_iSize];
}


MyStack::~MyStack(void)
{
delete[] m_pBuffer;
}

/*
以下用到了动态增加空间大小,而不是在初始化时,定义一个非常大的空间
原理:
注意:动态增加大小时,以原大小的两倍配置一块新的空间,
然后将原内容拷贝过来, 并释放原空间,再将指针指向新的空间

*/

void MyStack::push(int elem)
{
if(m_iTop == m_iSize)
{
m_iSize *= 2;
int* pTemp = new int[m_iSize];
for(int i = 0;i < m_iTop; ++i)
{
pTemp[i] = m_pBuffer[i];
}
delete[] m_pBuffer;
m_pBuffer = NULL;
m_pBuffer = pTemp;


}
m_pBuffer[m_iTop] = elem;
m_iTop++;
}

void MyStack::pop(int& elem)
{
m_iTop--;
elem = m_pBuffer[m_iTop];

}

void MyStack::clearStack()
{
m_iTop = 0;
}

bool MyStack::isEmpty()
{
if(m_iTop == 0)
{
return true;
}
return false;
}

int MyStack::stackLength()
{
return m_iTop;
}

void MyStack::stackTraverse(bool isFromBottom)
{
//栈底开始遍历
if(isFromBottom)
{
for(int i = 0;i < m_iTop;++i)
{
cout<}
}
else
{
for(int i = m_iTop-1;i >= 0;--i)
{
cout<}
}

}

int MyStack::begin()
{
return m_pBuffer[m_iTop-1];
}

int MyStack::back()
{
return m_pBuffer[0];
}

调用:

MyStack* myStack = new MyStack();
for(int i = 0 ;i < 100; ++i)
{
myStack->push(i);
}

cout << myStack->stackLength() << endl;
cout << myStack->begin() << endl;
cout << myStack->back() << endl;
myStack->stackTraverse(false);
myStack->clearStack();

关于"C++怎么实现栈"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

空间 元素 大小 动态 内容 指向 篇文章 C++ 原理 拷贝 指针 是在 更多 配置 不错 实用 个数 同时 地址 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 广东猪兼强互联网科技有限公司 华服互联网科技怎么样 深圳恒合互联网络科技有限公司 互联网和科技创新 互联网医疗科技 万达互联网科技 伴你行互联网科技有限公司 互联网科技的未来发展 互联网科技宣传片 人人互联网科技是培训 多迪互联网科技有限公司 互联网科技革命什么开始 玉溪互联网科技怎么选 洛阳共同富裕互联网科技有限公司 锡山区互联网智能科技产品供应 济南小医互联网科技有限公司招聘 银川新华互联网科技学校是国营吗 互联网对科技影响 网互联网络科技 上海喔噻互联网科技有限公司 天津市摩尔互联网科技 万易互联网科技有限公司 互联网巨头投资的硬核科技 太原新华互联网科技学校怎么样 济南和联互联网科技有限公司 烟台灵鸽互联网科技有限公司 玉溪新华互联网科技怎么选 好易买互联网科技 10位科技互联网大佬
0