Files
Linux-C-Notes/C11-数据结构/ds/line/compute/sqstack.c
2024-05-27 02:33:10 +08:00

73 lines
968 B
C

#include <stdio.h>
#include <stdlib.h>
#include "sqstack.h"
sqstack *st_create(void)
{
sqstack *st;
st = malloc(sizeof(*st));
if (NULL == st)
return NULL;
st->top = -1;
return st;
}
int st_isempty(sqstack *st)
{
return (-1 == st->top);
}
int st_push(sqstack *st, datatype *data)
{
if (MAXSIZE - 1 == st->top)
return -1;
st->data[++st->top] = *data;
return 0;
}
/* 取出栈顶元素 */
int st_pop(sqstack *st, datatype *data)
{
if (st_isempty(st))
return -1;
*data = st->data[st->top--];
return 0;
}
/* 查看栈顶元素 */
int st_top(sqstack *st, datatype *data)
{
if (st_isempty(st))
return -1;
*data = st->data[st->top];
return 0;
}
void st_travel(sqstack *st)
{
if (st_isempty(st))
return;
int i;
for (i = 0; i <= st->top; i++)
printf("%d ", st->data[i]);
printf("\n");
}
void st_destroy(sqstack *st)
{
free(st);
}