#include "stack.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
初始化栈
*/
stack_t* Init_stack(void)
{
stack_t* st = (stack_t *)malloc(sizeof(stack_t));
if(st == NULL)
{
printf("stack:");
return NULL;
}
st->top = -1;
return st;
}
/*
判断是否栈空
*/
int Empty_stack(stack_t* st)
{
if(st->top == -1)
return 1;
else
return 0;
}
/*
判断是否栈满
*/
int Full_stack(stack_t* st)
{
if(st->top == (MAXSIZE -1))
return 1;
else
return 0;
}
/*
入栈
*/
int Push_stack(stack_t*st, int data)
{
if(Full_stack(st))
return 0;
else
{
st->top++;
st->data[st->top] = data;
return 1;
}
}
/*
出栈
*/
int Pop_stack(stack_t* st,int* data)
{
if(Empty_stack(st))
return 0;
else
{
*data = st->data[st->top];
st->top--;
return *data;
}
}
/*
建立一个堆栈
*/
stack_t* Creat_stack(void)
{
int data;
stack_t* st = Init_stack();
if(st == NULL)
{
printf("stack error\n");
return NULL;
}
st = Init_stack();
printf("输入入栈的数据,以-1结束:\n");
while(!Full_stack(st))
{
scanf("%d",&data);
if(data == -1)
break;
Push_stack(st, data);
}
printf("\n");
return st;
}
/*
显示并注销
*/
void Loop_stack(stack_t* st)
{
int data;
printf("输出出栈的数据:\n");
while(!Empty_stack(st))
{
Pop_stack(st,&data);
printf("%d ",data);
}
printf("\n");
free(st);
}
int main(void)
{
stack_t* st = NULL;
st = Creat_stack();
Loop_stack(st);
return 0;
}
栈代码
最新推荐文章于 2022-08-20 16:32:59 发布