12.23 堆栈

数组实现堆栈操作

用数组实现堆栈的一些操作。

#include <stdio.h>
#include <stdlib.h>
#define BOTTOM -1
#define MAX 10

struct stack_data
{
    int top;
    int stack[MAX];
   
};
typedef struct stack_data Stack;

enum return_result {FULL_OK,FULL_NO,EMPTY_OK,EMPTY_NO,PUSH_OK,PUSH_NO,POP_OK,POP_NO};

void create_stack(Stack ** stack)//创建栈
{
    *stack = (Stack *)malloc(sizeof(Stack));
    if((*stack) == NULL)
    {
        printf("malloc error!\n");
        exit(-1);
    }
}
void init_stack( Stack * stack)//初始化栈
{
    stack->top = BOTTOM;
}

int is_full(Stack *stack)//判断栈是否为满
{
    if(stack->top == MAX-1)
    {
        return FULL_OK;
    }

    return FULL_NO;

}
int push_stack(Stack * stack, int num)//压栈操作
{
    if(is_full(stack) == FULL_OK)
    {
        printf("stack is full!\n");
        return PUSH_NO;
    }

    stack->top++;
    stack->stack[stack->top] = num;
    return PUSH_OK;

}
int is_empty(Stack * stack)//判断栈是否为空
{
    if(stack->top == BOTTOM)
    {
        return EMPTY_OK;
    }

    return EMPTY_NO;
}
int pop_stack(Stack * stack, int num)//出栈操作
{
    if(is_empty(stack) ==  EMPTY_OK)
    {
        printf("stack is empty!\n");
        return POP_NO;
    }

    stack->top--;
    stack->stack[stack->top] = num;
    return POP_OK;
}
int main()
{
    Stack * stack;
    int i;

    create_stack(&stack);

    init_stack(stack);

    for(i=0;i<13;i++)//压栈
    {
        if(push_stack(stack,i+1) == PUSH_OK)
        {
            printf("%-5d",i+1);
            printf("push ok %d!\n",i+1);
        }

    }

    for(i= stack->top; i>=-3; i--)//出栈
    {
        if(pop_stack(stack,i+1) == POP_OK)
        {
            printf("%-5d",i+1);
            printf("pop ok %d!\n",i+1);
        }
    }

    free(stack);//释放堆栈
    return 0;
}

### 回答1: icarus-3.3.12.23是一个版本号,通常用于软件开发或系统更新的标识。它表示某个软件、操作系统或系统组件的版本,其中icarus可能是软件或项目的名称,3.3.12.23则代表该软件或项目的具体版本号。 版本号常用于区分不同版本的软件,以便用户能够追踪和了解软件的开发历程和功能更新。在软件开发过程中,每个版本通常会修复一些已知的问题、提供一些新功能或改进现有功能。因此,通过版本号,用户可以知道当前软件所具备的功能和性能,并据此决定是否进行升级或更新。 icarus-3.3.12.23的版本号中的每个数字可能代表特定含义。例如,3可能表示第三个主要版本,3.3可能表示该版本有三个次要更新,12表示该版本的第12个修复,23可能表示该版本的第23个小改进。 总之,icarus-3.3.12.23是一个版本号,用于表示某个软件或项目的具体版本,可以帮助用户识别软件的发展历程和了解软件的功能和性能。 ### 回答2: icarus-3.3.12.23是一个版本号。版本号通常用来标识软件、应用程序或系统的特定版本。在这个例子中,icarus-3.3.12.23可能是一个软件或应用程序的版本号。 版本号通常由一串数字和点号组成,每个点号之间的数字代表不同的层级。以icarus-3.3.12.23为例,最左边的数字3可能代表主要版本号,表示该软件或应用程序经历了重大的改进或功能增加。接下来的3.12可能代表次要版本号,表示该版本引入了一些较小的更改或修复。最后的23可能代表修订版本号,表示对该软件或应用程序进行了一些小的修改或更新。 版本号的目的是为了帮助用户和开发人员追踪和识别软件的不同版本。通过版本号,用户可以了解到一个软件或应用程序的重要特点、功能和修复的问题。对于开发人员来说,版本号对于记录和追踪代码更改以及软件版本的发布也非常重要。 总之,icarus-3.3.12.23是一个标识某个软件或应用程序特定版本的版本号,它帮助用户和开发人员追踪软件版本、功能和修复的重要工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值