C++模板实现链式栈
来源:互联网 发布:windows udp 编辑:程序博客网 时间:2024/06/06 16:47
链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。
下面我们使用模板实现一个简单链式栈:
StackNode.h
template<typename Type> class LinkStack;template<typename Type> class StackNode{private:friend class LinkStack<Type>;StackNode(Type dt,StackNode<Type> *next=NULL):m_data(dt),m_pnext(next){} private:Type m_data;StackNode<Type> *m_pnext;};LinkStack.h
#include "StackNode.h"template<typename Type> class LinkStack{public:LinkStack():m_ptop(NULL){}~LinkStack(){MakeEmpty();}public:void MakeEmpty(); //make the stack emptyvoid Push(const Type item); //push the dataType Pop(); //pop the dataType GetTop() const; //get the data void Print(); //print the stack bool IsEmpty() const{return m_ptop==NULL;}private:StackNode<Type> *m_ptop;};template<typename Type> void LinkStack<Type>::MakeEmpty(){StackNode<Type> *pmove;while(m_ptop!=NULL){pmove=m_ptop;m_ptop=m_ptop->m_pnext;delete pmove;}}template<typename Type> void LinkStack<Type>::Push(const Type item){m_ptop=new StackNode<Type>(item,m_ptop);}template<typename Type> Type LinkStack<Type>::GetTop() const{if(IsEmpty()){cout<<"There is no elements!"<<endl;exit(1);}return m_ptop->m_data;}template<typename Type> Type LinkStack<Type>::Pop(){if(IsEmpty()){cout<<"There is no elements!"<<endl;exit(1);}StackNode<Type> *pdel=m_ptop;m_ptop=m_ptop->m_pnext;Type temp=pdel->m_data;delete pdel;return temp;}template<typename Type> void LinkStack<Type>::Print(){StackNode<Type> *pmove=m_ptop;cout<<"buttom";while(pmove!=NULL){cout<<"--->"<<pmove->m_data;pmove=pmove->m_pnext;}cout<<"--->top"<<endl<<endl<<endl;}Main.cpp
#include <iostream>using namespace std;#include "LinkStack.h"int main(){LinkStack<int> stack;int init[10]={1,3,5,7,4,2,8,0,6,9};for(int i=0;i<10;i++){stack.Push(init[i]);}stack.Print();cout<<stack.Pop()<<endl;stack.Print();cout<<stack.GetTop()<<endl;stack.Print();cout<<stack.Pop()<<endl;stack.Print();stack.MakeEmpty();stack.Print();stack.Pop();return 0;}
阅读全文
0 0
- C++模板实现链式栈
- C实现链式栈
- C链式栈实现
- 数据结构 链式 栈 c实现
- C语言实现链式栈
- c链式栈的实现
- 链式栈的C实现
- 栈(链式存储) C++模板实现
- 链式表实现模板
- 数据结构学习系列六-链式栈(c++实现且应用模板)
- C++模板实现链式队列
- C实现顺序栈和链式栈
- 用c语言实现的链式栈
- 链式栈的实现(ANSI C)
- C++ 链式栈的实现
- 数据结构-链式栈-C语言实现
- 链式栈的C语言实现
- 链表实现链式栈 c语言
- JSP web页面登陆注册 表单数据封装 流程总结(简单却容易在细节失误,所以需要严格的流程规范)
- 排序算法(C++)
- 各种学习链接
- 面试题4 框架知识
- Python常用数据类型和常用运算
- C++模板实现链式栈
- web前端学习日记33
- 1261: [SCOI2006]zh_tree
- 浅谈服务发现
- try,catch,finally中的return如何影响代码的执行语序
- explicit关键字
- Linux中的别名机制、异常关闭处理及撤销
- SSH框架整合过程总结
- 二、hibernate提交事务