使用栈实现一个任意进制转换器

栈的编程思路:

1初始化一个空栈

2.判断栈是否为空

3.判断栈是否满了

4.入栈

5.出栈

6.销毁栈



#include <stdio.h>

#include <stdlib.h>
#include <string.h>

typedef struct{
        int *top;
        int *base;
        int stack_size;
}stack;

void init(stack *s)
{
        s->base=(int *)malloc(100*sizeof(int));
        if(s->base==NULL)
        {
                perror("s->base");
                exit(-1);
        }
        s->top=s->base;
        s->stack_size=100;
}

int empty(stack *s)
{
        return s->top==s->base;
}

int full(stack *s)
{
        return s->top-s->base==s->stack_size-1;
}

int push(stack *s,int num)
{
        if(full(s))
        {
                printf("stack is full\n");
                exit(-1);
        }
        return *s->top++=num;

}

int pop(stack *s)
{
        if(empty(s))
        {
                printf("stack is empty\n");
                exit(-1);
        }
        return *--s->top;
}

void destroy(stack *s)
{
        free(s->base);
        s->top=NULL;
        s->base=NULL;
        s->stack_size=0;
}

int main(int argc,char** argv)
{
        stack *s;
        int num;
        printf("input the num:");
        scanf("%d",&num);
        int mode;
        printf("input the mode:");
        scanf("%d",&mode);
        init(s);
        while(num){
                push(s,num%mode);
                num=num/mode;
        }
        while(!empty(s)){
                printf("%d",pop(s));
        }
        printf("\n");

destroy(s);
        return 0;
}


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零一2035

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值