• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C++栈(stack)的模板类实现代码

c++ 搞代码 4年前 (2022-01-06) 24次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了C++栈(stack)的模板类实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C++栈(stack)的模板类实现代码,供大家参考,具体内容如下

1.基本概念

  栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out)

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

  压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一

  出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一

  栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小

2.构造栈

可以使用数组构造栈,也可以使用单向链表构造,我觉得使用单向链表更加灵活方便,下面的例子我使用单向链表来构造栈。

单向链表的头插法比较适合,链表头作为栈顶:

节点的数据结构:

 template struct node { T value; //储存的值 node* next; node() :next(nullptr){} //构造函数 node(T t) :value(t), next(nullptr){} }; 

用模板类构造一个简单的stack类:

 template class myStack { int cnts; //入栈数量 node *head; //栈的头部 public: myStack(){ cnts = 0; head = new node; } void stackPush(T arg); //入栈 T stackPop(); //出栈 T stackTop(); //获取栈顶元素 void printStack(); //打印栈 int counts(); //获取栈内元素个数 bool isEmpty(); //判断空 }; template void myStack::stackPush(T arg) { node *pnode = new node(arg); //申请入栈元素的空间 pnode->next = head->next; head->next = pnode; cnts++; } template T myStack::stackPop() { if (head->next!=nullptr) { node* temp = head->next; head->next = head->next->next; T popVal = temp->value; delete temp; retu<a style="color:transparent">来源gao*daima.com搞@代#码网</a>rn popVal; } } template T myStack::stackTop() { if (head->next!=nullptr) { return head->next->value; } } template void myStack::printStack() { if (head->next != nullptr) { node* temp = head; while (temp->next != nullptr) { temp = temp->next; cout <value << endl; } } } template int myStack::counts() { return cnts; } template bool myStack::isEmpty() { if (cnts) return false; else return true; } 

GitHub:https://github.com/whlook/stackTemplate

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是C++栈(stack)的模板类实现代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C++栈(stack)的模板类实现代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址