利用栈的基本操作将一个十进制数转换成二进制数,并将转换结果输出

紧急。。。。

第1个回答  推荐于2017-10-05
#include <stdio.h>
#include <stdlib.h>
#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");
}

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

参考资料:环境 VC++6.0

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网