#include <stdio.h>
typedef struct{
int buf[SIZE]; //编译时指定SIZE的值
int num; //栈元素个数
}stack;
void stack_init(stack *ps)
{
ps->num = 0;
}
void stack_delete(stack *ps)
{
ps->num = 0;
}
int stack_size(const stack *ps)
{
return ps->num;
}
int stack_full(const stack *ps)
{
return ps->num >= SIZE;
}
int stack_empty(const stack *ps)
{
return ps->num <= 0;
}
int stack_push(stack *ps, int val)
{
if(ps->num == SIZE){
return 0;
}
ps->buf[ps->num] = val;
ps->num++;
return 1;
}
int stack_pop(stack *ps, int *val)
{
if(ps->num == 0){
return 0;
}
ps->num--;
*val = ps->buf[ps->num];
return 1;
}
int stack_top(const stack *ps, int *val)
{
if(ps->num == 0){
return 0;
}
*val = ps->buf[ps->num - 1];
return 1;
}
int main()
{
stack sk = {0};
int num = 0, ret = 0;
stack_init(&sk);
while(1){
printf("input a number: ");
scanf("%d", &num);
if(num < 0)
break;
ret = stack_push(&sk, num);
if(!ret)
break;
}
while(1){
ret = stack_pop(&sk, &num);
if(!ret)
break;
printf("%d ", num);
}
printf("\n");
stack_delete(&sk);
return 0;
}
顺序栈的实现
最新推荐文章于 2022-10-15 13:03:11 发布