几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
2016-11-27 12:29
676 查看
//构造栈--模板类 #include <iostream> using namespace std; template<typename T,int size> class Stack { public: Stack(); ~Stack(); bool push(T elem); bool pop(T &elem); bool isEmpty(); bool isFull(); void clear(); void travel(); private: int m_iTop; T * m_Sstack; int m_iSize; }; template<typename T,int size> Stack<T,size>::Stack(){ m_iSize=size; m_Sstack= new T[size]; m_iTop=0; } template<typename T,int size> Stack<T,size>::~Stack(){ delete []m_Sstack; m_Sstack=NULL; } template<typename T,int size> void Stack<T,size>::clear(){ m_iTop=0; } template<typename T,int size> bool Stack<T,size>::isEmpty(){ return m_iTop==0?true:false; } template<typename T,int size> bool Stack<T,size>::isFull(){ return m_iTop==m_iSize?true:false; } template<typename T,int size> bool Stack<T,size>::push(T elem){ if(isFull()){ return false; }else{ m_Sstack[m_iTop]=elem; m_iTop++; return true; } } template<typename T,int size> bool Stack<T,size>::pop(T &elem){ if(isEmpty()){ return false; }else{ m_iTop--; elem=m_Sstack[m_iTop]; return true; } } template<typename T,int size> void Stack<T,size>::travel(){ int i; for (i=0;i<m_iTop;i++){ cout<<m_Sstack[i]<<" "; } cout<<endl; } //测试数据 int main() { Stack<int,5> stack1; int a,b,c; cout<<stack1.isEmpty()<<endl; stack1.push(5); stack1.push(6); cout<<stack1.isEmpty()<<endl; stack1.travel(); stack1.pop(a); stack1.push(7); stack1.pop(b); stack1.pop(c); cout<<a<<b<<c<<endl; stack1.push(7); stack1.travel(); return 0; }
相关文章推荐
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- 几种基本数据结构--栈、队列、双向链表、有根树的分析和简单实现
- 基于链表及环形队列的生产者与消费者简单实现
- 简单数据结构之循环链表(C++实现)
- 简单数据结构之双向链表(C++实现)
- 算法与数据结构基础6:C++队列的简单实现
- C++数据结构环形队列Deque实现
- 数据结构_队列_用链表动态建立释放节点实现队列各种操作_C++实现
- 数据结构学习中的简单问题(一):用链表方式实现的队列输出杨辉三角
- 简单数据结构之队列(C++模板库实现)
- 用链表实现队列数据结构
- C++ 带有头结点的单链表的简单实现
- 算法与数据结构课程中的c++实现的顺序表和链表
- 数据结构--单链表实现队列1
- 简单数据结构的实现之循环队列
- 数据结构_链表_多项式求导_C++实现
- 简单链式队列(C++模版技术实现)
- C++ 实现queue(队列)链表
- 数据结构_链表_稀疏多项式求值_C++实现
- java数据结构之LinkedQueue(用链表实现的双端单向队列)