数组实现堆栈(sbds)

// 假设一个堆栈的总个数不会超过1000,用数组实现堆栈数据结构。

struct Stack{
    int index;
    int arr[1000];
};

// 注意初始化方法
struct Stack stack = { -1, '0'};

void push(struct Stack* stack, int val)
{
    ++(stack->index);   
    stack->arr[stack->index] = val;
}

bool pop(struct Stack* stack, int* val)
{
    if (stack->index == -1)
    {
        return false;
    }
    else
    {
        *val = stack->arr[stack->index];
        --(stack->index);
        return true;
    }
}

bool top(struct Stack* stack, int* val)
{
    if (stack->index == -1)
    {
        return false;
    }
    else
    {
        *val = stack->arr[stack->index];
        return true;
    }
}

void clear(struct Stack* stack)
{
    stack->index = -1;
}

注意:
1、初始化结构体用struct Stack stack= { -1, ‘0’},而不是struct Stack* stack。若使用*,只是定义了指针,而stack中的数组空间未创建,需要另外malloc出空间;
2、调用方式:push(&symbol, 5),调用时需要取址;
3、clear时只需要保证不能继续pop即可,arr空间一直存在,其中存储的值不影响后续pop和push;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值