栈的基本操作(进栈,出栈)

#include <stdio.h>
#define MAX_STACK_SIZE 100
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int Status;
typedef struct sqstack
{
    int  stack_array[MAX_STACK_SIZE];
    int top;
    int bottom;
}SqStack;
//栈的初始化
SqStack Init_Srack(void)
{
    SqStack S;
    S.bottom = S.top=0;
    return(S);
}
//压栈(元素进栈)
Status push(SqStack &S,ElemType e)
{
    if(S.top==MAX_STACK_SIZE - 1)
        return ERROR;
    S.top ++;
    S.stack_array[S.top] = e;
    return OK;   //压栈成功
}
//弹栈(元素出栈)
Status pop(SqStack S,ElemType &e)
{
    if(S.top==0)
        return ERROR;
    e = S.stack_array[S.top];
    S.top--;
    return OK;
}
int main()
{
    SqStack s1;
    int i;
    s1 = Init_Srack();
    printf("请输入进栈的数:");
    scanf("%d",&i);
    push(s1,i);
    printf("请输入出栈数:");
    scanf("%d",&i);
    pop(s1,i);
    return 0;
}

本代码是参考清华大学版的数据结构进行编写的,当时由于初学,所以有一些bug,回首一看,已经过去了三四年,哈哈哈哈哈,再回来看这个代码,当时还真是“年少无知”哈~不过,除了bug以外,我不会重新的去更改这个代码,也许是一份珍贵的记忆。

代码很简单,用C语言实现了简单的出栈、进栈的操作,很基础,但是依据这份代码可能实现一些基于栈的数据结构的问题。例如,可以简单的加入for循环,这样的话,就能实现动态的栈存储过程,不多说了。大家如果有什么需求,可以在评论区提出来,能力时间允许的范围下,我会按照需求更新代码的~欢迎大家交流与探讨哈。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值