完成了表达式计算小程序
This commit is contained in:
72
Chapter11/ds/line/compute/sqstack.c
Normal file
72
Chapter11/ds/line/compute/sqstack.c
Normal file
@@ -0,0 +1,72 @@
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user