栈的顺序存储结构

栈的结构定义如下

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

你可能感兴趣的:(栈的顺序存储结构)