当前位置: 首页 > news >正文

通用的链栈实现(C++)

template<class T>
class MyStack//链栈
{
private:struct StackNode{T data;StackNode* next;StackNode(const T& val = T(), StackNode* p = nullptr) :data(val), next(p) {}//};StackNode* top;int cursize;void clone(const MyStack& s){Clear();cursize = s.cursize;StackNode* p = s.top;if (p == nullptr)return;top = new StackNode(p->data);StackNode* tail = top;p = p->next;while (p != nullptr){tail=tail->next = new StackNode(p->data);p = p->next;}}
public:MyStack():cursize(0), top(nullptr) {}MyStack(const MyStack& s) :top(nullptr), cursize(s.cursize){clone(s);}MyStack& operator=(const MyStack& s){if (this != &s){clone(s);}return *this;}~MyStack(){Clear();}void Clear(){while (top != nullptr){StackNode* q = top;top = q->next;delete q;}cursize = 0;}int Size()const{return cursize;}bool Empty()const{return Size() == 0;}void  Push(const T& val)//入栈{top = new StackNode(val, top);//头插cursize += 1;}const T& Top()const//返回栈顶元素{return top->data;}void Pop()//出栈{StackNode* q = top;top = q->next;delete q;cursize -= 1;}bool GetTop(T& val)//得到栈顶元素并出栈{if (Empty())return false;val = top->data;StackNode* q = top;top = q->next;delete q;cursize -= 1;return true;}};int main()
{MyStack<char>cmys;MyStack<int>imys;MyStack<double> dmys;for (char c = 'a'; c < 'z'; c++){cmys.Push(c);}char val;while (cmys.GetTop(val)){cout << val << endl;}return 0;
}

http://www.lryc.cn/news/228656.html

相关文章:

  • 物联网AI MicroPython学习之语法 bluetooth蓝牙
  • React中的key有什么作用?
  • 初认识vue,v-for,v-if,v-bind,v-model,v-html等指令
  • Java 算法篇-深入了解单链表的反转(实现:用 5 种方式来具体实现)
  • Android 10.0 系统内存优化之修改dalvik虚拟机的内存参数
  • Docker+K8s基础(重要知识点总结)
  • IDEA 关闭SpringBoot启动Logo/图标
  • 提供话费充值接口 话费快充慢充/API独立接口,商城/小程序/公众号合作
  • [N-133]基于springboot,vue小说网站
  • 计算机网络:概述
  • 服务号怎么升级订阅号
  • 11.读取文件长度-fseek和ftell函数的使用
  • 视觉大模型DINOv2:自我监督学习的新领域
  • Java事务详解
  • el-table实现展开当前行时收起上一行的功能
  • Go的优雅退出
  • 【KVM-6】KVM/QEMU软件栈
  • 硬件知识2
  • 【Java 进阶篇】JQuery DOM操作:通用属性操作的绝妙魔法
  • 在任何机器人上实施 ROS 导航堆栈的指南
  • Android 中注解的使用
  • 我国陆地遥感卫星发展现状与展望
  • arcgis基础篇--实验
  • 【chatglm3】(3):在AutoDL上,使用4090显卡,部署ChatGLM3API服务,并微调AdvertiseGen数据集,完成微调并测试成功!附视频演示。
  • python爬虫top250电影数据
  • STL简介+浅浅了解string——“C++”
  • wpf 和winform 的区别
  • 【Apifox】国产测试工具雄起
  • PNAS | 蛋白质结构预测屈服于机器学习
  • PlayCanvas通过IFrame嵌入页面如何与canvasplay脚本通讯