栈操作

#include <stdio.h>

#define MaxSize 10

typedef struct{
	int data[MaxSize];
	int top;
}Stack;

void InitStack(Stack &);	//初始化 
int StackEmpty(Stack);		//判断栈是否为空
bool Push(Stack & , int e);		//入栈 
int Pop(Stack & , int &);	//出栈 
int  TopData(Stack , int);	//读取栈顶数据 

int main(void){
	Stack s;
	InitStack(s);
	
	switch(StackEmpty(s)){
		case 0:
			printf("栈空.
");
			break;
		case 1:
			printf("栈满.
");
			break;
		case 2:
			printf("栈不为空且不满.
");
	}
	
	Push(s,1);
	Push(s,2);
	Push(s,3);
	Push(s,4);
	
	int e = 0;
	printf("出栈的数据是:%d
",Pop(s,e));
	printf("出栈的数据是:%d
",Pop(s,e));
	
	printf("栈顶数据为:%d
",TopData(s,e));
	return 0;
} 

//初始化 
void InitStack(Stack &s){
	s.top = -1;
}

//判断栈是否为空 
int StackEmpty(Stack s){
	if(s.top = -1){
		return 0;
	}else if(s.top == MaxSize - 1){
		s.top == MaxSize - 1;
		return 1;
	}else{
		return 2;
	}
} 

//入栈
bool Push(Stack &s , int e){
	if(s.top == MaxSize - 1){
		printf("栈满");
		return false;
	}
	s.data[++s.top] = e;
	return true;
} 

//出栈
int Pop(Stack &s , int &e){
	if(s.top == -1){
		printf("栈空");
		return 0;
	}
	e = s.data[s.top--];
	return e;
}

//读取栈顶数据 
int TopData(Stack s , int e){
	if(s.top == -1){
		printf("栈空");
		return 0;
	}
	e = s.data[s.top];
	return e;
}
原文地址:https://www.cnblogs.com/Timesi/p/12427879.html