栈&在主函数中初始化

之前发过一篇在函数中初始化不成功的文章,是关于指针的

现在补上关于栈成功在主函数中初始化的代码

#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
typedef int ElemType;
typedef struct{
    ElemType* base;
    ElemType top;//下标
}stack;
void Init(stack* s){//初始化函数
    s->base=(ElemType*)malloc(maxsize*sizeof(ElemType));//申请空间
    if(s==NULL){
        printf("malloc fail in Init");
        return NULL;
    }
    s->top=0;
}
void push(stack* s,ElemType e){//压栈
    if(s->top==maxsize){//溢出
        printf("stack is overflow");
        return;
    }
    *(s->base+s->top)=e;//压入
    s->top++;//栈顶上移
}
int pop(stack* s){//出栈
    if(s->top==0){//空栈
        printf("stack is underflow");
        return 0;
    }
    s->top--;//栈顶下移
    return *(s->base+s->top);//返回移出的值
}
void print(stack* s){//从栈顶到栈底打印栈
    printf("stack:\n");
    for(int i=s->top-1;i>=0;i--){
        printf("%d\n",*(s->base+i));
    }
}
int main(){
    stack s;
    Init(&s);
    push(&s,1);
    push(&s,2);
    push(&s,3);
    print(&s);
    printf("pop:%d\n",pop(&s));
    print(&s);
    return 0;
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值