#include<stdio.h>
#define datatype char
#define MAXSIZE 100
typedef struct
{
datatype data[MAXSIZE];
int top;
} SEQSTACK;
SEQSTACK* s;
void Init_Stack(SEQSTACK* s) {
s->top = -1;
}
int Stack_Empty(SEQSTACK* s) {
if (s->top == -1)
return 1;
else
return 0;
}
void Push_Stack(SEQSTACK* s, datatype x) {
if (s->top == MAXSIZE - 1)
printf("Stack full\n");
else
{
s->top++;
s->data[s->top] = x;
}
}
datatype Gettop_Stack(SEQSTACK* s) {
datatype x;
if (Stack_Empty(s))
{
printf("Stack empty.\n");
x=NULL;
}
else
x = s->data[s->top];
return x;
}
datatype Pop_Stack(SEQSTACK* s) {
datatype x;
if (Stack_Empty(s))
{
printf("Stack empty\n");
x=NULL;
}
else
{
x = s->data[s->top];
s->top--;
}
return x;
}
void main() {
int a;
int ch;
SEQSTACK stack, *s;
s = &stack;
Init_Stack(s);
printf("请输入一个十进制数:");
scanf(" %d", &a);
while (a != 0) {
Push_Stack(s, a % 2);
a = a / 2;
}
printf("它的二进制为:");
while (!Stack_Empty(s)) {
ch = Gettop_Stack(s);
printf("%d", ch);
Pop_Stack(s);
}
}