网易首页 > 网易号 > 正文 申请入驻

使用C++数组实现简单的栈数据结构

0
分享至

摘要

栈是一种后进先出(LIFO)的数据结构,它只允许在一端(称为栈顶)进行插入和删除操作。在C++中,我们可以使用数组来实现栈的基本功能。本文将介绍如何使用C++数组来实现一个简单的栈,并通过代码示例详细解释栈的基本操作。

一、栈的基本概念

栈(Stack)是一种特殊的线性数据结构,它具有以下特性:

只能在栈顶进行插入和删除操作。

栈是后进先出(Last In First Out, LIFO)的数据结构。

栈的基本操作包括:

  • push:在栈顶插入一个元素。
  • pop:删除并返回栈顶的元素。
  • top:返回栈顶的元素,但不删除。
  • isEmpty:检查栈是否为空。

二、使用C++数组实现栈

在C++中,数组是一种内置的数据结构,我们可以使用它来模拟栈的行为。下面我将详细解析这个代码中的每个部分:

类定义

class Stack { private: int topIndex; // 栈顶索引,-1表示栈空 const int maxSize; // 栈的最大容量,由构造函数设置并保持不变 int* stackArray; // 指向整数数组的指针,该数组用于存储栈中的元素 public: // ... 构造函数、析构函数和成员函数 };

private部分定义了三个成员变量:topIndex(栈顶索引)、maxSize(栈的最大容量)和stackArray(指向栈数组的指针)。

public部分定义了构造函数、析构函数和栈的基本操作函数。

构造函数

Stack(int size) : maxSize(size), topIndex(-1) { stackArray = new int[maxSize]; }

构造函数接收一个整数size作为参数,并初始化maxSize和topIndex。

使用new运算符动态分配一个整数数组,其大小为maxSize,并让stackArray指向它。

析构函数

~Stack() { delete[] stackArray; }

析构函数在对象被销毁时调用,用于释放stackArray指向的动态分配的内存。

入栈操作(push)

void push(int value) { if (topIndex >= maxSize - 1) { throw std::out_of_range("Stack is full!"); } stackArray[++topIndex] = value; }

首先检查栈是否已满(topIndex >= maxSize - 1)。

如果栈未满,则先将topIndex加1,然后在新的topIndex位置存储value。

出栈操作(pop)

int pop() { if (isEmpty()) { throw std::out_of_range("Stack is empty!"); } return stackArray[topIndex--]; }

首先调用isEmpty函数检查栈是否为空。

如果栈非空,则返回当前topIndex位置的元素,并将topIndex减1。

查看栈顶元素(top)

int top() const { if (isEmpty()) { throw std::out_of_range("Stack is empty!"); } return stackArray[topIndex]; }

同样先检查栈是否为空。

如果栈非空,则返回当前topIndex位置的元素,但不修改topIndex。

检查栈是否为空(isEmpty)

bool isEmpty() const { return topIndex == -1; }

如果topIndex等于-1,则栈为空,返回true;否则返回false。

主函数(main)

int main() { try { Stack stack(5); // 创建一个容量为5的栈实例 // ... 执行栈操作,包括push、pop和top } catch (const std::out_of_range& e) { std::cerr << "Error: " << e.what() << std::endl; return 1; } return 0; }

在main函数中,使用try-catch块来捕获可能由栈操作抛出的std::out_of_range异常。

创建一个Stack对象,并对其进行一系列操作,包括入栈、出栈和查看栈顶元素。

总结

这个简单的栈实现使用C++数组作为底层数据结构,并通过封装提供了栈的基本操作接口。它遵循栈的后进先出(LIFO)原则,并通过异常处理机制提供了错误检查。在实际应用中,这种数据结构对于需要按照特定顺序处理元素的场景非常有用。

今日头条看文章不方便的朋友也可以去我的博客鲨鱼编程查看更多文章。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
阿斯报:未来几个月,皇马将会考虑签下基米希一事

阿斯报:未来几个月,皇马将会考虑签下基米希一事

直播吧
2024-11-15 02:48:01
大幅拉升!光刻机巨头,重大宣布

大幅拉升!光刻机巨头,重大宣布

券商中国
2024-11-14 21:31:19
公司年会上,我正准备官宣恋情时,妻子白月光却突然当众向她求婚

公司年会上,我正准备官宣恋情时,妻子白月光却突然当众向她求婚

点读故事会
2024-11-11 09:54:24
日本乒乓球WTT福冈总决赛完整名单确定!

日本乒乓球WTT福冈总决赛完整名单确定!

农村玲子
2024-11-14 13:13:11
期望越高,失望越大,10月享界S9销量仅758辆,首次上市失败?

期望越高,失望越大,10月享界S9销量仅758辆,首次上市失败?

玩车专家1
2024-11-14 16:22:37
去意已决?樊振东连续退赛,一细节展示与刘国梁关系,积怨难消

去意已决?樊振东连续退赛,一细节展示与刘国梁关系,积怨难消

蓝天世界飞
2024-08-26 18:20:35
江苏省新规:电动车充电收费,价格标准定了!

江苏省新规:电动车充电收费,价格标准定了!

城市日历
2024-11-13 16:47:55
东莞新奥提醒您:立冬过后,这些用气习惯一定要改!

东莞新奥提醒您:立冬过后,这些用气习惯一定要改!

南方都市报
2024-11-14 10:08:22
张玉宁绝杀后发文动情晒国旗!拼到瘸腿令人泪目,父亲:以你为傲

张玉宁绝杀后发文动情晒国旗!拼到瘸腿令人泪目,父亲:以你为傲

我爱英超
2024-11-15 02:00:44
韦雪小18岁男友官宣!男方生图被扒长相平平,一点不像王俊凯!

韦雪小18岁男友官宣!男方生图被扒长相平平,一点不像王俊凯!

古希腊掌管月桂的神
2024-11-14 14:46:25
女硕士法庭自述:其中对黑人男友评价,让许多人听了颤抖

女硕士法庭自述:其中对黑人男友评价,让许多人听了颤抖

青丝人生
2024-10-30 21:42:28
1200亿!科大讯飞,这次真爆了?

1200亿!科大讯飞,这次真爆了?

看财经show
2024-11-14 17:19:05
滕哈赫饭碗被抢!罗马官宣新帅!引援吃回扣太明显,无队邀请他

滕哈赫饭碗被抢!罗马官宣新帅!引援吃回扣太明显,无队邀请他

阿泰希特
2024-11-14 14:24:37
“尺度之王”丁度·巴拉斯执导的5部黄暴电影,尺度一部比一部炸裂

“尺度之王”丁度·巴拉斯执导的5部黄暴电影,尺度一部比一部炸裂

小微看电影
2024-11-14 17:23:09
刘晓庆74岁大寿显寒酸,蛋糕廉价菜没油水,笑容尴尬不见老公亲友

刘晓庆74岁大寿显寒酸,蛋糕廉价菜没油水,笑容尴尬不见老公亲友

娱圈小愚
2024-11-14 14:42:22
美军向中东迅速增兵,伊朗高层却在访华期间,提出让人意外的建议

美军向中东迅速增兵,伊朗高层却在访华期间,提出让人意外的建议

豆豆看往事
2024-11-15 02:23:25
美吹坐不住了!央视最新发布,总金额超100亿,订单超1500台

美吹坐不住了!央视最新发布,总金额超100亿,订单超1500台

Thurman在昆明
2024-11-13 18:24:20
此事由家庭矛盾引起,司机身份曝光,身家超千万,为躲债假离婚

此事由家庭矛盾引起,司机身份曝光,身家超千万,为躲债假离婚

辣条小剧场
2024-11-14 04:28:16
看完感觉乳腺都通畅了!果然整顿家庭纠纷还得是00后啊,太刺激了

看完感觉乳腺都通畅了!果然整顿家庭纠纷还得是00后啊,太刺激了

滑稽斑马呀
2024-11-13 16:22:18
女同事欠我两万不还,说要钱没有要人随便,我迫不得已去了她家

女同事欠我两万不还,说要钱没有要人随便,我迫不得已去了她家

小莫哥哥野钓日记
2024-03-14 19:01:10
2024-11-15 04:18:44
鲨鱼编程
鲨鱼编程
懂点技术,懂点编程
441文章数 155关注度
往期回顾 全部

科技要闻

官宣!极氪领克合并,吉利走向大整合

头条要闻

世预赛:国足客场1-0巴林收获两连胜 张玉宁绝杀

头条要闻

世预赛:国足客场1-0巴林收获两连胜 张玉宁绝杀

体育要闻

本季英超最炸裂的瓜,由一名裁判制造

娱乐要闻

娜扎张云龙恋情曝光!甜蜜细节被扒

财经要闻

"机构举报游资"导致A股大跌?

汽车要闻

七块屏幕四座布局 仰望U7中式百万座舱

态度原创

本地
时尚
亲子
教育
数码

本地新闻

重庆记忆|别再CityWalk了 来云端之眼CityClimb

秋冬穿黑色,这4个技巧照着穿更时髦

亲子要闻

面容缺陷宝宝问话妈妈,为什么小朋友说自己丑,扎了辫子还是没人喜欢

教育要闻

16岁中学生简历引关注 正高职称 还研发火箭?

数码要闻

红魔氘锋能量块 120W 三口氮化镓套装上架,首发 139 元

无障碍浏览 进入关怀版