您的位置:首页 > 理论基础 > 数据结构算法

几种简单的数据结构的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++