数据结构考题 十进制转换为二进制
利用栈(以顺序栈作存储结构)实现进制转换。给定一个十进制整数,编程将该数以二进制形式输出。
顺序栈的类型定义:
#define MAXSIZE 100 // MAXSIZE为最大数据元素数目
typedef int ElemType;
typedef struct
{ ElemType *base;
ElemType *top;
}SqStack;
输入格式:
输入一个十进制整数。
输出格式:
输出转换后的二进制数。
输入样例:
15
输出样例:
在这里给出相应的输出。例如:
1111
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
#define MAXSIZE 100
typedef int ElemType;
typedef struct SqStack{
ElemType *top;
ElemType *base;
ElemType stacksize;
}stack;
int Initstack(stack *s){
s->base=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));//申请空间
if(s->base==NULL) {
return ERROR;
}
s->top=s->base;
s->stacksize=MAXSIZE;
return OK;
}
int Push(stack *s,ElemType e){
if(s->top-s->base==MAXSIZE){
return ERROR;
}
*s->top++=e;
return OK;
}
int Pop(stack *s){
if(s->top==s->base){
printf("栈为空栈!\n");
return ERROR;
}
s->top--;
printf("%d",*s->top);
return OK;
}
void transition(stack *s){
int m;
int n=2;
scanf("%d",&m);
while(m){
Push(s,m%n);
m=m/n;
}
while(s->top!=s->base){
Pop(s);
}
}
void main(){
stack s;
Initstack(&s);
transition(&s);
}