栈是一种线性数据结构,一端封闭,一端开口,有着先进后出的特性,使用及其广泛。
下面的例子简单演示了使用栈对输入的内容逆向输出的功能
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *bottom;
int *top;
unsigned int length;
} stack;
int initstack(stack *p, unsigned int n)
{
p->bottom = p->top = (int*)malloc(sizeof(int) * n);
p->length = n;
return 0;
}
int cleanstack(stack *p)
{
free(p->bottom);
p->bottom = p->top = NULL;
p->length = 0;
return 0;
}
int push(stack *p, int n)
{
*++p->top = n;
return 0;
}
int pop(stack *p)
{
return *p->top--;
}
int main(int argc, char *argv[])
{
int n, i;
stack x;
scanf("%d", &n);
initstack(&x, n);
for (i = 0; i < n; i++)
{
int m;
scanf("%d", &m);
push(&x, m);
}
for (i = 0; i < n; i++)
{
printf("%d ", pop(&x));
}
printf("\n");
cleanstack(&x);
return 0;
}