话不多说 直接看代码
包含栈的初始化函数,添加元素,移除元素,检测是否为空栈以及输出栈顶元素。
#include
#include
#define ERROR 0;
#define OK 1;
typedef struct Stack{
int *elements;
int max_size,top_index;
}Stack;
void init(Stack *s,int length){
s->elements=(int *)malloc(sizeof(int)*length);
s->max_size=length;
s->top_index=-1;
}
int push(Stack* s, int element){
if (s->top_index >= s->max_size - 1) {
return ERROR;
}
s->top_index++;
s->elements[s->top_index] = element;
return OK;
}
int pop(Stack* s){
if(s->top_index < 0){
return ERROR;
}
s->top_index--;
return OK;
}
int top(Stack* s) {
if(s->top_index==-1){
return ERROR;
}
else{
return s->elements[s->top_index];
}
}
int empty(Stack* s){
if(s->top_index < 0){
return 1;
}
else{
return 0;
}
}
int main(){
int n;
scanf("%d",&n);
Stack* stack_a=(Stack *)malloc(sizeof(Stack));
init(stack_a,n);
}