C++ 结构体模版实现栈

#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;
}

在这里插入图片描述

发布了167 篇原创文章 · 获赞 52 · 访问量 6939

猜你喜欢

转载自blog.csdn.net/qq_42363032/article/details/103802853