C语言数据结构 十进制数转二进制数的代码问题
发布网友
发布时间:2022-05-26 07:06
我来回答
共1个回答
热心网友
时间:2023-10-05 11:21
错误太多了啊,看看这个改过的吧
#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
#define STACK_INIT_SIZE 50
typedef int DataType;
typedef struct sStack
{
DataType *base;
DataType *top;
int stacksize; //×î´óÈÝÁ¿
} SqStack;
void InitStack(SqStack &S)
{
S.base=(DataType*)malloc(STACK_INIT_SIZE*sizeof(DataType));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
void Push(SqStack &S,DataType x)
{
if( S.top-S.base>= S.stacksize)
{
S.base=(DataType*)realloc(S.base,(S.stacksize+STACK_INIT_SIZE)*sizeof(DataType));
S.stacksize+=STACK_INIT_SIZE;
}
*S.top++=x;
}
int Pop(SqStack &S,DataType &x)
{
if(S.top==S.base) return 0;
x=*--S.top;
return 1;
}
int StackEmpty(SqStack &S)
{
return (S.top==S.base);
}
void conversion(SqStack &S,int N)
{
//InitStack(S); // scanf("%d",N);
while(N)
{
Push(S,N%2);
N=N/2;
}
while(!StackEmpty(S))
{
int x;
Pop(S,x);
printf("%d",x);
}
}
void main()
{
int n; SqStack S;// struct(n);
InitStack(S);// conversion(n);
printf("请输入待转换的值\n");
scanf("%d",&n);
conversion(S,n);
}