C语言栈实现十进制转二进制
利用栈的先进后出的性质,与十进制转二进制时的2除法相似
(先算的余数放在后位)
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct stack
{
int Data[MaxSize]; // 存储元素的数组
int Top; //栈顶指针
} SeqStack;
SeqStack* creatstack()
{
SeqStack *p = (SeqStack*)malloc(sizeof(SeqStack));
p->Top = -1;
return p;
}
void Push(SeqStack *p,int x)
{
p->Top++;
p->Data[p->Top] = x;
}
void convNum(SeqStack *p,int n, int R)
{
while (n!=0)
{
Push(p,n%R);
n/=R;
}
}
int main()
{
SeqStack *s;
s = creatstack();
int x; //原数
int r=2; //要转化的进制数
scanf("%d", &x);
convNum(s,x,r);
while (s->Top!=-1)
{
printf("%d", s->Data[s->Top--]);
}
return 0;
}