#include <iostream>
using namespace std;
#define MAX 50
template<typename T> struct Stack{
T data[MAX];
int top;
};
//初始化
template<typename T> void init(Stack<T> &s){
s.top = -1;
}
//大小
template<typename T> int getsize(Stack<T> s){
return s.top+1;
}
//是否为空
template<typename T> int isEmpty(Stack<T> s){
return ( (s.top==-1) ? 1:0);//空就是1
}
//压栈
template<typename T> int push(Stack<T> &s, T ele){
if((s.top+1) > MAX){//栈满
return 0;
}
s.top++;
s.data[s.top] = ele;
return 1;
}
//出栈
template<typename T> int pop(Stack<T> &s, T &num){
if( (isEmpty(s)==1) ){//栈空
return 0;
}
num = s.data[s.top];
s.top--;
return 1;
}
//获取栈顶元素
template<typename T> T get_top(Stack<T> s){
if( (isEmpty(s)==0) ){//栈不是空
return s.data[s.top];
}
}
int main(){
Stack<int> s;
init(s);
for(int i=1; i<=10; i++){
push(s,i);
}
cout<<isEmpty(s)<<endl;
for(int i=0; i<10; i++){
int num=0;
pop(s,num);
cout<<num<<" ";
}
push(s,10);
if(!isEmpty(s)){
cout<<endl<<get_top(s)<<endl;
}else{
cout<<"栈空\n";
}
return 0;
}
C++ 结构体模版实现栈
猜你喜欢
转载自blog.csdn.net/qq_42363032/article/details/103802853
今日推荐
周排行