zhan.c
#include "zhan.h"
//创建顺序栈
stack *create_stack()
{
stack *p=(stack*)malloc(sizeof(stack));
if(p==NULL)
{
return NULL;
}
memset(p->data,0,sizeof(p->data));
p->top=-1;
return p;
}
//判空
int empty_stack(stack *s)
{
if(s==NULL)
{
printf("入参为空\n");
return -1;
}
return s->top==-1?1:0;
}
//判满
int full_stack(stack *s)
{
if(s==NULL)
{
printf("入参为空\n");
return -1;
}
return s->top==MAX-1?1:0;
}
//入栈,压栈,进栈
int push_stack(stack *s,int in_data)
{
if(s==NULL)
{
printf("入参为空\n");
return -1;
}
if(full_stack(s))
{
return -1;
}
s->top++;
s->data[s->top]=in_data;
return 0;
}
//出栈
int pop_stack(stack *s)
{
if(s==NULL)
{
printf("入参为空\n");
return -1;
}
if(empty_stack(s))
{
return -1;
}
printf("出栈元素为%d\n",s->data[s->top]);
s->top--;
return 0;
}
//遍历
int print_stack(stack *s)
{
if(s==NULL)
{
printf("入参为空\n");
return -1;
}
int i;
for(i=s->top;i>=0;i--)
{
printf("%d\n",s->data[i]);
}
return 0;
}
//销毁栈
int del_stack(stack *s)
{
if(s==NULL)
{
printf("入参为空\n");
return -1;
}
free(s);
s=NULL;
printf("释放成功\n");
return 0;
}
zhan.h
#ifndef __ZHAN_H__
#define __ZHAN_H__
#define MAX 10
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int data[MAX];
int top;
}stack;
//创建顺序栈
stack *create_stack();
//判空
int empty_stack(stack *s);
//判满
int empty_stack(stack *s);
//入栈,压栈,进栈
int push_stack(stack *s,int in_data);
//出栈
int pop_stack(stack *s);
//遍历
int print_stack(stack *s);
//销毁栈
int del_stack(stack *s);
#endif
main.c
#include <stdio.h>
#include "zhan.h"
int main(int argc, const char *argv[])
{
stack *s =create_stack();
push_stack(s,34);
push_stack(s,10);
push_stack(s,30);
push_stack(s,40);
push_stack(s,50);
print_stack(s);
pop_stack(s);
print_stack(s);
pop_stack(s);
print_stack(s);
return 0;
}