c语言用栈与队列将十进制转为二进制,C语言数据结构之栈与队列的应用(1)进制转换...

栈与队列的应用

(1)输入一个十进制数,利用栈操作,将该数转换成n进制数。

#include

#include

#include

#define stack_init_size 100

#define stackincrement 10

typedef struct sqstack

{

int *base;

int *top;

int stacksize;

} sqstack;

int StackInit(sqstack *s)

{

s->base=(int *)malloc(stack_init_size *sizeof(int));

if(!s->base)

return 0;

s->top=s->base;

s->stacksize=stack_init_size;

return 1;

}

int Push(sqstack *s,int e)

{

if(s->top-s->base>=s->stacksize)

{

s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int));

if(!s->base)

return 0;

s->top=s->base+s->stacksize;

s->stacksize+=stackincrement;

}

*(s->top++)=e;

return e;

}

int Pop(sqstack *s,int e)

{

if(s->top==s->base)

return 0;

e=*--s->top;

return e;

}

int stackempty(sqstack *s)

{

if(s->top==s->base)

{

return 1;

}

else

{

return 0;

}

}

int conversion(sqstack *s)

{

int n,e=0,flag=0;

printf("输入要转化的十进制数:\n");

scanf("%d",&n);

printf("要转化为多少进制:2进制、8进制、16进制填数字!\n");

scanf("%d",&flag);

printf("将十进制数%d转化为%d进制是:\n",n,flag);

while(n)

{

Push(s,n%flag);

n=n/flag;

}

while(!stackempty(s)) {

e=Pop(s,e);

switch(e)

{

case 10: printf("A");

break;

case 11: printf("B");

break;

case 12: printf("C");

break;

case 13: printf("D");

break;

case 14: printf("E");

break;

case 15: printf("F");

break;

default: printf("%d",e);

}

}

printf("\n");

return 0;

}

int main()

{

sqstack s;

StackInit(&s);

conversion(&s);

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值