C++栈(stack)的模板类实现代码
发布时间 - 2026-01-11 01:50:57 点击率:次本文实例为大家分享了C++栈(stack)的模板类实现代码,供大家参考,具体内容如下

1.基本概念
栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out)
只能在栈顶进行插入和删除操作
压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一
出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一
栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小
2.构造栈
可以使用数组构造栈,也可以使用单向链表构造,我觉得使用单向链表更加灵活方便,下面的例子我使用单向链表来构造栈。
单向链表的头插法比较适合,链表头作为栈顶:
节点的数据结构:
template<class T>
struct node
{
T value; //储存的值
node<T>* next;
node() :next(nullptr){} //构造函数
node(T t) :value(t), next(nullptr){}
};
用模板类构造一个简单的stack类:
template<class T>
class myStack
{
int cnts; //入栈数量
node<T> *head; //栈的头部
public:
myStack(){ cnts = 0; head = new node<T>; }
void stackPush(T arg); //入栈
T stackPop(); //出栈
T stackTop(); //获取栈顶元素
void printStack(); //打印栈
int counts(); //获取栈内元素个数
bool isEmpty(); //判断空
};
template<class T>
void myStack<T>::stackPush(T arg)
{
node<T> *pnode = new node<T>(arg); //申请入栈元素的空间
pnode->next = head->next;
head->next = pnode;
cnts++;
}
template<class T>
T myStack<T>::stackPop()
{
if (head->next!=nullptr)
{
node<T>* temp = head->next;
head->next = head->next->next;
T popVal = temp->value;
delete temp;
return popVal;
}
}
template<class T>
T myStack<T>::stackTop()
{
if (head->next!=nullptr)
{
return head->next->value;
}
}
template<class T>
void myStack<T>::printStack()
{
if (head->next != nullptr)
{
node<T>* temp = head;
while (temp->next != nullptr)
{
temp = temp->next;
cout << temp->value << endl;
}
}
}
template<class T>
int myStack<T>::counts()
{
return cnts;
}
template<class T>
bool myStack<T>::isEmpty()
{
if (cnts)
return false;
else
return true;
}
GitHub:https://github.com/whlook/stackTemplate
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C++
# 栈
# stack
# 模板类
# C++中用两个标准容器stack
# 实现一个队列的方法详解
# C++中Stack(栈)的使用方法与基本操作详解
# C++详解实现Stack方法
# C++Stack栈类模版实例详解
# c++ stack容器适配器的使用
# C++中stack容器的使用
# C++之stack类的代码及其逻辑举例详解
# 链表
# 并将
# 可以使用
# 我觉得
# 数据结构
# 弹出
# 大家分享
# 具体内容
# 大家多多
# 基本概念
# 只能在
# center
# style
# text
# align
# GitHub
# endl
# pre
# class
# true
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
javascript基于原型链的继承及call和apply函数用法分析
三星、SK海力士获美批准:可向中国出口芯片制造设备
js代码实现下拉菜单【推荐】
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
三星网站视频制作教程下载,三星w23网页如何全屏?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Python并发异常传播_错误处理解析【教程】
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
如何在IIS7中新建站点?详细步骤解析
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
如何快速上传建站程序避免常见错误?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel怎么在Blade中安全地输出原始HTML内容
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
网站制作价目表怎么做,珍爱网婚介费用多少?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
微信小程序 wx.uploadFile无法上传解决办法
如何用已有域名快速搭建网站?
如何快速生成橙子建站落地页链接?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
如何正确下载安装西数主机建站助手?
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
免费视频制作网站,更新又快又好的免费电影网站?
如何在腾讯云免费申请建站?
简历没回改:利用AI润色让你的文字更专业
网站制作软件有哪些,制图软件有哪些?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
制作企业网站建设方案,怎样建设一个公司网站?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
Angular 表单中正确绑定输入值以确保提交与验证正常工作
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
网页设计与网站制作内容,怎样注册网站?

