#include <stdio.h>
#include <stdlib.h>
#define max 1024//定义一位数组最大长度
typedef int datatype;
typedef struct //结果体定义
{
datatype elements[max];
int top;
}Stack;
void setNull(Stack *S)//空栈
{
S->top=-1;
}
int isfull(Stack *S)//判断是否为满栈
{
if(S->top>=max-1) return 1;
else return 0;
}
int isempty(Stack *S)//判断是否为空栈
{
if(S->top>=0) return 0;
else return 1;
}
void push(Stack *S,datatype x)//向栈中输入数据
{
if(S->top>=max-1)
printf("顶部溢出了~\n");
else
{
S->top++;
S->elements[S->top]=x;
}
}
datatype *pop(Stack *S)
{
datatype *temp;
if(isempty(S))
{
printf("底部溢出\n");
return(NULL);
}
else
{
S->top--;
temp=(datatype *)malloc(sizeof(datatype));
*temp=S->elements[S->top+1];
return (temp);
}
}
void conversion(int n) //十进制转换二进制函数
{
int m;
Stack S;
setNull(&S);
while(n)
{
m=n%2;
if(isfull(&S))
printf("顶部溢出\n");
else
push(&S,m);
n=n/2;
}
printf("十进制转二进制结果为:\n");
while(!isempty(&S))
printf("%d",*(pop(&S)));
printf("\n");
}
int main()
{
int number;
printf("输入要转换的十进制数;\n");
scanf("%d",&number);
conversion(number);
}