数据结构之栈的静态顺序存储实现-c语言版

#define MAX_STACK_SIZE 100 /* 栈向量大小 */
#define OK 1
#define ERROR -1

typedef int ElemType;
typedef int Status;
typedef struct sqstack
{
    ElemType stack_array[MAX_STACK_SIZE];
    int top;
}SqStack;

/* 栈的初始化*/
SqStack Init_Stack(void)
{
    SqStack S;
    S.top =0;
    return (S);
}

/* 压栈(元素进栈)*/
Status push(SqStack *S,ElemType e)
{
    if(S->top == MAX_STACK_SIZE -1) return ERROR; //栈满,返回错误标志
    S->top++; /* 栈顶元素指针加1 */
    S->stack_array[S->top] = e; /* e 成为新的栈顶 */
    return OK; /* 压栈成功 */
}

Status pop(SqStack *S,ElemType *e)
{
    if(S->top ==0) return ERROR; /* 栈空,返回错误标志 */
    *e = S->stack_array[S->top];
    S->top--;
    return OK;
}

/* 测试 */
int main(void)
{
    int i =0,j=0;
    SqStack stack;
    stack = Init_Stack();

    while(i<10)
    {
        ElemType e = i;
        push(&stack,e);
        i++;
    }

    while(j<10)
    {
        ElemType e1;
        pop(&stack,&e1);
        printf("%d,",e1);
        j++;
    }
    return 0;
}

以上代码是纯c语言,我是在code::blocks上执行通过的。大家可以参考。

你可能感兴趣的:(数据结构,数据结构)