栈的顺序存储结构
2018-01-25 本文已影响0人
我有一只碗
栈的结构定义如下
typedef struct
{
int data[MAXSIZE];
int top;
} Stack;
它是一种先进后出(FILO)的数据结构,所有的操作如下
// 操作结果:初始化一个栈
void Init(Stack *s)
{
s->top = -1;
}
// 操作结果:向栈s放入一个元素e
int Push(Stack *s, int e)
{
// 栈满
if (s->top == MAXSIZE - 1)
{
return ERROR;
}
s->data[++(s->top)] = e;
return OK;
}
// 操作结果:从栈s弹出一个元素并放入e指向的内存
int Pop(Stack *s, int *e)
{
// 栈为空
if (s->top == -1)
{
return ERROR;
}
*e = s->data[(s->top)--];
return OK;
}
测试结果说明
int main()
{
Stack *s = (Stack*)malloc(sizeof(Stack));
Init(s);
Push(s, 1);
Push(s, 2);
Push(s, 3);
Push(s, 4);
Push(s, 5);
Push(s, 6);
int *p = (int*)malloc(sizeof(int));
while (Pop(s, p))
{
printf("%d\n", *p);
}
}
$ gcc stack.c
$ ./a.out
6
5
4
3
2
1
入栈顺序为1,2,3,4,5,6
出栈顺序为6,5,4,3,2,1