博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的stack实现.
阅读量:6195 次
发布时间:2019-06-21

本文共 2493 字,大约阅读时间需要 8 分钟。

hot3.png

 #include 
#include 
#include 
template
class Node{ public:  T data; //节点内存储的数据.   Node
* next; //指向下一个节点.     template
  Node(const Ty& data_, Node
* n=nullptr);    ~Node()=default;};
template
template
Node
::Node(const Ty& data_, Node
* n)        :data(data_)         next(n){ //}
template
class AStack{ //先进后出.  private:  unsigned int maxSize; //该stack最多能够容纳多少个数据.   Node
* top;         //指向顶部数据的指针.   Node
* rear;        //指向尾部数据的指针.   unsigned int counter; //计数,当前stack中有多少个元素.     void clear(Node
* root)noexcept; //清理该stack中的数据.     public:   template
< std::is_unsigned
::value>::type>   AStack(const Ty& size);      ~AStack();      template
   void push(const Ty& value);   const Node
& top()const noexcept;   void pop()noexcept;   void clear()noexcept;};
template
template
AStack
::AStack(const Ty& size)          :maxSize(size), //size            top(nullptr),  //默认为空。            rear(nullptr),           counter(0){ //}
template
AStack
::~AStack(){ this->clear();}
template
void AStack
::clear(Node
* ptr)noexcept{ if(ptr == nullptr){  return; }  if(ptr != nullptr){  this->clear(ptr->next); }  delete ptr; ptr = nullptr;}
template
const Node
& AStack
::top()const noexcept //返回当前stack中的第一个数据. { return (this->rear)->data;}
template
void AStack
::pop()noexcept //删除当前stack中第一个数据. { Node
* headNext = (this->head)->next; delete this->head; this->head = headNext; headNext = nullptr;}
template
void AStack
::push(const Ty& value) //压入一条数据进去stack. { if(this->head == nullptr){  ++(this->counter);          //this->counter = 1;  this->head = new Node
(value);  this->rear = (this->head)->next;   }else{  if(this->counter <= this->maxSize)  {   this->rear = new Node
(value);   this->rear = (this->rear)->next;  }else{   throw std::runtime_error("Can not bigger than the maxSize!");  } }}
template
void AStack
::clear()noexcept{ this->clear(this->head);}

转载于:https://my.oschina.net/SHIHUAMarryMe/blog/670978

你可能感兴趣的文章
jquery 的队列queue
查看>>
配置tomcat连接器后,启动服务报错“No Certificate file specified or invalid file format"异常...
查看>>
Nodejs基础:路径处理模块path总结
查看>>
[APUE]进程关系(下)
查看>>
设计模式 - 代理模式(proxy pattern) 未使用代理模式 具体解释
查看>>
判断窗体 show完成
查看>>
Android内存泄露分析之StrictMode
查看>>
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
查看>>
算法笔记_228:信用卡号校验(Java)
查看>>
magento megatron主题加入中文
查看>>
前端性能优化之优化图片 && 优化显示图片
查看>>
select标签中option内容加链接
查看>>
C分配struct变量一个不理解的地方
查看>>
KAFKA分布式消息系统
查看>>
Unicode编码转换汉字
查看>>
B轮公司技术问题列表
查看>>
Codeforce GYM 100741 A. Queries
查看>>
redis在spring中的配置及java代码实现
查看>>
合并石子大总结
查看>>
如何处理Android中的防缓冲区溢出技术
查看>>