C++中其实有stack的模板类。功能更为强大。

自己写一个栈能让我们对栈这种数据结构更加熟悉。这个栈有一个不足之处就是里面存放的元素类型只能为int。
#include <iostream>
using namespace std;
class Stack
{
private:
struct Node
{
int data;
Node *next;
};
Node *head;
Node *p;
int length;
public:
Stack()
{
head = NULL;
length = 0;
}
void push(int n)//入栈
{
Node *q = new Node;
q->data = n;
if (head == NULL)
{
q->next = head;
head = q;
p = q;
}
else
{
q->next = p;
p = q;
}
length ++;
}
int pop()//出栈并且将出栈的元素返回
{
if (length <= 0)
{
abort();
}
Node *q;
int data;
q = p;
data = p->data;
p = p->next;
delete(q);
length --;
return data;
}
int size()//返回元素个数
{
return length;
}
int top()//返回栈顶元素
{
return p->data;
}
bool isEmpty()//判断栈是不是空的
{
if (length == 0)
{
return true;
}
else
{
return false;
}
}
void clear()//清空栈中的所有元素
{
if (length > 0)
{
pop();
}
}
};
int main()
{
//以下为测试代码
Stack s;
s.push(1);
s.push(2);
s.push(3);
while(!s.isEmpty())
{
cout<<s.pop()<<endl;
}
return 0;
}
对这段代码稍加修改,这个栈就能存放其他类型的元素
#include <iostream>
using namespace std;
template<class T>class Stack
{
private:
struct Node
{
T data;
Node *next;
};
Node *head;
Node *p;
int length;
public:
Stack()
{
head = NULL;
length = 0;
}
void push(T n)//入栈
{
Node *q = new Node;
q->data = n;
if (head == NULL)
{
q->next = head;
head = q;
p = q;
}
else
{
q->next = p;
p = q;
}
length ++;
}
T pop()//出栈并且将出栈的元素返回
{
if (length <= 0)
{
abort();
}
Node *q;
int data;
q = p;
data = p->data;
p = p->next;
delete(q);
length --;
return data;
}
int size()//返回元素个数
{
return length;
}
T top()//返回栈顶元素
{
return p->data;
}
bool isEmpty()//判断栈是不是空的
{
if (length == 0)
{
return true;
}
else
{
return false;
}
}
void clear()//清空栈中的所有元素
{
while(length > 0)
{
pop();
}
}
};
int main()
{
Stack<char> s;
s.push('a');
s.push('b');
s.push('c');
while(!s.isEmpty())
{
cout<<s.pop()<<endl;
}
return 0;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++链表
# 栈
# C++链表与栈
# C语言数据结构之使用链表模拟栈的实例
# 清空
# 就能
# 这段
# 数据结构
# 希望能
# 能让
# 谢谢大家
# 能为
# 不足之处
# 有一个
# std
# namespace
# gt
# iostream
# Stack
# data
# Node
# private
# struct
# int
相关文章:
建站之星代理平台如何选择最佳方案?
红河网站制作公司,红河事业单位身份证如何上传?
如何配置支付宝与微信支付功能?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
网站制作企业,网站的banner和导航栏是指什么?
如何确保西部建站助手FTP传输的安全性?
建站之星如何快速解决建站难题?
如何登录建站主机?访问步骤全解析
网站制作公司排行榜,抖音怎样做个人官方网站
建站主机系统SEO优化与智能配置核心关键词操作指南
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
c# 在ASP.NET Core中管理和取消后台任务
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何在云虚拟主机上快速搭建个人网站?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何快速使用云服务器搭建个人网站?
如何彻底删除建站之星生成的Banner?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
已有域名能否直接搭建网站?
制作电商网页,电商供应链怎么做?
个人网站制作流程图片大全,个人网站如何注销?
购物网站制作公司有哪些,哪个购物网站比较好?
建站之星云端配置指南:模板选择与SEO优化一键生成
制作门户网站的参考文献在哪,小说网站怎么建立?
太原网站制作公司有哪些,网约车营运证查询官网?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
建站之星北京办公室:智能建站系统与小程序生成方案解析
如何在腾讯云服务器上快速搭建个人网站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
如何选择高效响应式自助建站源码系统?
建站VPS推荐:2025年高性能服务器配置指南
建站主机如何选?高性价比方案全解析
如何用PHP快速搭建CMS系统?
公司网站设计制作厂家,怎么创建自己的一个网站?
股票网站制作软件,网上股票怎么开户?
C#怎么创建控制台应用 C# Console App项目创建方法
建站之星展会模板:智能建站与自助搭建高效解决方案
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
大连网站设计制作招聘信息,大连投诉网站有哪些?
江苏网站制作公司有哪些,江苏书法考级官方网站?
家庭服务器如何搭建个人网站?
招贴海报怎么做,什么是海报招贴?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何高效利用200m空间完成建站?
实现虚拟支付需哪些建站技术支撑?
*请认真填写需求信息,我们会在24小时内与您取得联系。