64,637
社区成员
发帖
与我相关
我的任务
分享
//Stack.h文件
#ifndef _Stack_H__
#define _Stack_H__
#include<iostream>
using namespace std;
template<class T,int MAXSIZE> //MAXSIZE是非类型参数,代表栈的容量大小
class Stack{
private:
T elems[MAXSIZE]; //elems数组用于存储栈的数据元素
int top; //栈顶指针
public:
Stack(){top=0;};
void push(T e); //入栈操作
T pop(); //出栈操作
bool empty(){return top==0;} //判断栈是否为空
bool full(){return top==MAXSIZE;} //判断栈是否满
};
#endif
//Stack.cpp文件
#include"stack.h"
template<class T,int MAXSIZE> //push成员函数的类外定义
void Stack< T, MAXSIZE>::push(T e)
{
if(top==MAXSIZE){
cout<<"栈已满,不能再加入元素了!";
return;
}
elems[top++]=e;
}
template<class T,int MAXSIZE> //pop成员函数的类外定义,指定为内联函数
inline T Stack<T, MAXSIZE>::pop()
{
if(top<=0){
cout<<"栈已空,不能再弹出元素了!"<<endl;
return 0;
}
top--;
return elems[top];
}
//main.cpp文件
#include"stack.h"
template<class T>
void display(Stack<T,10> &s)
{
while( !s.empty())
cout<<s.pop()<<"\t";
cout<<endl;
}
void main()
{
Stack<int,10> iStack;
cout<<"-------intStack----\n";
for(int i=1;i<10;i++)
iStack.push(i);
display(iStack);
}