栈的数组实现

本文介绍了栈的数组实现方式,提供了一个C语言的代码示例,包括入栈和出栈操作。在代码中,定义了栈的结构体,并通过`push`和`pop`函数实现了数据的压入和弹出。同时,给出了一个关于栈操作的笔试题,讨论了栈满和栈空的情况。
摘要由CSDN通过智能技术生成

栈原理

代码实现

代码:栈(入栈,出栈)的数组实现-C文档类资源-CSDN文库https://download.csdn.net/download/Yi_xiong/84971098

typedef struct stack_info
{
    int     data[10];
    int     top;
    int     bottom;
    int     size;
    int     cnt;//count
}stack_t;//定义栈的结构体

/*函数定义*/
void push(stack_t *stack, int data);//将数据压入栈
int pop(stack_t *stack);//从栈中取出数据

int main()
{
    stack_t      stack;
    memset(&stack, 0, sizeof(stack));//将stack中的数据都置为0
    stack->size = 10;
    //stack->data = malloc(stack->size);
    push(&stack, 1);
    printf("%d", pop(&stack));
}
void push(stack_t *stack, int data)//将数据压入栈
{
    if( stack->cnt >= stack->size)//栈为满
    {
        return;    
    }
    stack->data[stack->top ++] = data;//将数据存入栈顶,同时top加一
    stack->cnt++;
}
int pop(stack_t *stack)//从栈中取出数据
{
    if( stack->cnt == 0 ) // stack->top == stack->bottom
    {
        return;    //栈为空
    }

    stack->cnt --;
    return stack->data[stack->top --];//从栈顶取出元素,同时top减一
}

笔试题

 答案:

9:由于栈的最大长度为4,所以最多可同时容纳4个数据。

        A:1不可能在2之前出来,正确顺序是:4,3,5,6,2,1

                1进,2进,3进,4进,4出,3出,5进,5出,6进,6出,2出,1出

        B: 1进,1出,2进,3进,4进,5进,此时栈已满,6不可能进去,只有5出了以后才能进

                所以,B错

        C:1进,2进,2出,3进,3出,4进,5进,6进,6出,5出,4出,1出,所以C正确

        D:栈最大为4,不能把6个数都放进去,所以D错

5: 除B以外的都选;

链表实现栈------>用链表的头插法即可实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值