Stack数据结构的模板实现
2014-03-15 00:03
169 查看
上篇文章list忘了声明一点,此链表带有一个亚元节点(即不存放数据,只记录第一个链表节点位置的节点)。这次的这个Stack也是一个带有亚元节点的Stack。
这个实现基本上把Stack该有的基本的东西都实现了,比如说:判空,判满,出栈,入栈等等。后续还会有个人写的基本的数据结构的贴上来。
好了再次我就不多说了直接贴代码:
代码不是很多,大家只需要拷出来加上main函数就可以运行。
这个实现基本上把Stack该有的基本的东西都实现了,比如说:判空,判满,出栈,入栈等等。后续还会有个人写的基本的数据结构的贴上来。
好了再次我就不多说了直接贴代码:
#include<exception> #include<iostream> using namespace std; template <class T> class Stack { public: struct node{ T data; node* next; node(const T data = T()):data(data),next(NULL){} }; Stack(int _max=0):max(_max),size(0){head = new node();} virtual ~Stack(); void stackPush(const T&); T stackPop(); bool stackEmpty(); bool stackFull(); void show(); void clear(); void setNode(node*,const T&); int getSize()const { return size;} private: int size; int max; node* head; }; template <class T> void Stack<T>::clear() { node* p = head; while(p->next!=NULL) { node* temp; temp = p; p = p->next; --size; delete temp; } } template <class T> Stack<T>::~Stack() { clear(); } template <class T> void Stack<T>::setNode(node* resultNode,const T& data) { node* no = new node(); if(no!=NULL){ no->data = data; no->next = resultNode->next; resultNode->next = no; } ++size; } template <class T> void Stack<T>::stackPush(const T& data) { if(stackFull()) { throw "Stack is full !!"; } if(head==NULL) { head = new node(); } node* p = head; setNode(p,data); } template <class T> T Stack<T>::stackPop() { if(stackEmpty()) { throw "Stack is empty !!"; } T data = head->next->data; node* p = head->next->next; delete head->next; head->next = p; --size; return data; } template <class T> void Stack<T>::show() { node* p = head->next; cout<<"Stack< "; while(p!=NULL) { cout<<p->data<<' '; p = p->next; } cout<<" > "; cout<<endl; } template <class T> bool Stack<T>::stackEmpty() { return (head->next)==NULL; } template <class T> bool Stack<T>::stackFull() { return size==max; }
代码不是很多,大家只需要拷出来加上main函数就可以运行。
相关文章推荐
- 并查集模板代码实现(非递归)
- 应用PHP标签模板实现什么任务
- 将 html 代码写入 js 文件中,然后在网页中引用此 js 文件,实现头模板重用
- 如何在VS2008中使自定义模板实现与项目默认模板同样效果
- PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
- Linu c++ 简单实现链表类模板
- 二叉树 链表实现 模板
- 扩展Sitemesh3 DecoratorSelector实现基于请求参数调用装饰模板页面的实现
- 商城项目-使用json模板实现带分类的产品规格信息存储及展示
- Django的模板实现方式和PHP模板以及前端模板的区别
- 使用.net core ABP和Angular模板构建博客管理系统(实现博客列表页面)
- C# 实现Excel导出 加载模板 导入数据到模板
- 栈的简介及C++模板实现
- jquery插件splitScren实现页面分屏切换模板特效
- opencv——实现目标模板匹配
- jquery插件splitScren实现页面分屏切换模板特效
- 利用C++模板,代替虚函数实现类的静态多态性及动态继承
- 自定义tt文本模板实现MySql指数据库中生成实体类
- C++模板实现直接插入排序
- 二叉树 队列实现 模板