题解 | #【模板】栈#

【模板】栈

https://www.nowcoder.com/practice/104ce248c2f04cfb986b92d0548cccbf

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

#define STACKSIZE 100000 //因为顺序栈分配的内存不够一直不给过,我真的会栓Q

typedef struct
{
    int data[STACKSIZE];
    int top;
}_stack;

_stack stack;

void Stack_Init(_stack *s)
{
    s->top = -1;
}

bool Stack_Null(_stack *s)
{
    if(s->top == -1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

bool Stack_Full(_stack *s)
{
    if(s->top == STACKSIZE-1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

bool Stack_Push(_stack *s,int x)
{
    if(Stack_Full(s))
    {
        return 0;
    }
    else
    {
        s->top++;
        s->data[s->top] = x;
        return 1;
    }
}

int Stack_Pop(_stack *s)
{
    int x;
    if(Stack_Null(s))
    {
        return 0;
    }
    else
    {
        x = s->data[s->top];
        s->top--;
        return x;
    }
}

int Stack_Top(_stack *s)
{
    int x;
    if(Stack_Null(s))
    {
        return 0;
    }
    else
    {
        x = s->data[s->top];
        return x;
    }
}

int main() {
    int num,x;
    char *str = (char*)malloc(6*sizeof(char));
    Stack_Init(&stack);
    scanf("%d",&num);
    for(int i = 0; i < num; i++)
    {
        scanf("%s",str);
        if(!strcmp(str,"push"))
        {
            scanf("%d",&x);
            if(!Stack_Full(&stack))
            {
                Stack_Push(&stack,x);
            }
            else
            {
                printf("error\n");
            }
        }

        if(!strcmp(str,"pop"))
        {
            if(Stack_Null(&stack))
            {
                printf("error\n");
            }
            else
            {
                printf("%d\n",Stack_Pop(&stack));
            }
        }

        if(!strcmp(str,"top"))
        {
            if(Stack_Top(&stack) == 0)
            {
                printf("error\n");
            }
            else
            {
                printf("%d\n",Stack_Top(&stack));
            }
        }

    }
    return 0;
}

全部评论

相关推荐

Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务