算法导论10.1-栈

#include <stdio.h>
#include <malloc.h>

#define TRUE 1
#define FALSE 0

typedef struct _stack
{
    int top;//栈顶指针
    int A[16];//数组指针
} stack;

int stack_empty(stack *S)
{
    if(S->top){
        return TRUE;
    }else{
        return FALSE;
    }
}

int push(stack *S, int x)
{
    S->top = S->top+1;
    S->A[S->top] = x;
    printf("top %d,push %d\n", S->top, S->A[S->top]);
    return S->A[S->top];
}

int pop(stack *S)
{
    if(stack_empty(S) == 0){
        printf("underflow\n");
        return -1;
    }else{
        S->top = S->top-1;
    }
    printf("top %d,pop %d\n", S->top+1,S->A[S->top+1]);
    return S->A[S->top+1];
}

int main()
{
    stack *S;
    S = (stack *)malloc(sizeof(stack));
    //init
    S->top = 0;

    push(S, 3);
    push(S, 2);
    push(S, 4);
    pop(S);
    pop(S);
    pop(S);
    pop(S);
   
    return 0;
}

转载请注明:小Y » 算法导论10.1-栈

赞 (0) 评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址