顺序栈是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标标识使的栈顶指针top(相对指针)完成各种操作。
typedef int data_t; //定义栈中的数据元素的数据类型
typedef struct {
data_t * data; //用指针指向栈的存储空间
int maxlen; //当前栈的最大元素个数
int top; //指示栈位置(数组下表)的变量
}sqstack; //顺序栈类型定义
创建栈:
sqstack *stack_create(int len){
sqstack *ss;
ss = (sqstack *)malloc(sizeof(sqstack));
ss->data = (data_t *)malloc(sizeof(data_t)*len);
ss->maxlen = len;
return ss;
}
清空栈:
stack_clear(sqstack *s){
s->top = -1;
}
判断栈是否空:
int stack_empty(sqstack *s){
return (s->top == -1 ? 1 : 0);
}
出栈:
datatype stack_pop(sqstack *s){
s->top--;
return (s->data[s->top+1]);
}
取栈顶元素:
datatype get_top(sqstack *s){
return (s->data[s->top]);
}
sqstack.h sqstack.c test.c
sqstack.h 文件
sqstack * stack_create(int len); //创建一个栈
int stack_push(sqstack *s,data_t value); //进栈
int stack_empty(sqstack *s); //判断栈是否为空
int stack_full(sqstack *s); //判断栈是否满了
<