c语言用栈与队列将十进制转为二进制,利用栈的基本操作将一个十进制数转换成二进制数,并将转换结果输出...

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

Boyhypo

推荐于 2017.10.05

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:43%    等级:10

已帮助:2419人

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef struct se{

int data;

se *next;

}SElem;

typedef struct{

SElem *base;

SElem *top;

}Stack;

int InitStack(Stack *s){ /*初始化栈*/

s->base = (SElem *)malloc(sizeof(SElem));

if(!s->base)

return(OVERFLOW);

s->top = s->base;

return(OK);

}

int Push(Stack *s,int x){ /*插入栈顶元素*/

SElem *p=(SElem *)malloc(sizeof(SElem));

if(!p)

return(ERROR);

p->data=x;

p->next=s->top;s->top=p;

return(OK);

}

int Pop(Stack *s){ /*弹出栈顶元素*/

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

printf("ERROR\n");

return(ERROR);

}

int x;

SElem *t;

x=s->top->data;

t=s->top;s->top=s->top->next;free(t);

return(x);

}

void main(){

int i,j;

Stack * s=(Stack *)malloc(sizeof(Stack));

InitStack(s);

scanf("%d",&i);

while(i!=0){

j=i%2;

i=i/2;

if(j==0) Push(s,0);

else Push(s,1);

}

while(s->top!=s->base)

printf("%d",Pop(s));

printf("\n");

}

我也是初学者,根据数据结构书上的东西现编的程。对栈底元素的利用可能有误,健壮性不足,但是可以实现转化了~

10分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值