#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef int element;
typedef struct {
element* data; // dataÀº Æ÷ÀÎÅÍ·Î Á¤ÀǵȴÙ.
int capacity; // ÇöÀç Å©±â
int top;
} StackType;
// ½ºÅà »ý¼º ÇÔ¼ö
void init_stack(StackType* s)
{
s->top = -1;
s->capacity = 1;
s->data = (element*)malloc(s->capacity * sizeof(element));
}
// °ø¹é »óÅ °ËÃâ ÇÔ¼ö
int is_empty(StackType* s)
{
return (s->top == -1);
}
// Æ÷È »óÅ °ËÃâ ÇÔ¼ö
int is_full(StackType* s)
{
return (s->top == (s->capacity - 1));
}
void push(StackType* s, element item)
{
if (is_full(s)) {
s->capacity *= 2;
s->data = (element*)realloc(s->data, s->capacity * sizeof(element));
}
s->data[++(s->top)] = item;
}
// »èÁ¦ÇÔ¼ö
element pop(StackType* s)
{
if (is_empty(s)) {
fprintf(stderr, "½ºÅà °ø¹é ¿¡·¯\n");
exit(1);
}
else return s->data[(s->top)--];
}
int factorial(StackType* s, int n)
{
int result = 1;
for (int i = n; i > 0; i--)
push(s, i);
for (int i = n; i > 0; i--) {
result *= pop(s);
}
return result;
}
int main(void)
{
element e;
StackType s;
int num;
init_stack(&s);
printf("½ÊÁø¼ö: ");
scanf("%d", &num);
while (num > 0) {
push(&s, num % 2);
num /= 2;
}
printf("ÀÌÁø¼ö: ");
while (!is_empty(&s)) {
printf("%d", pop(&s));
}
free(s.data);
return 0;
}