堆栈实现进制转换

  #include <stdio.h>

#include <stdlib.h>
#define stack_size 50
 
typedef struct
{
 int stack[stack_size];
 int top;
} Stack;
 
void InitStack(Stack *S)
{
 S->top=-1;
}
 
int IsEmpty(Stack *S)
{
 if(S->top==-1)
   return 1;
 else
   return 0;
}
 
int Push(Stack *S,int c)
{
 if(S->top==stack_size-1)
   return 0;
 else
   S->top++;
   S->stack[S->top]=c;
 return 1;
}
 
/*  int GetTop(Stack *S,int *x)
{
 if(S->top==-1)
   return 0;
 else
   *x=S->stack[S->top];
 return 1;
}  */
 
int Pop(Stack *S,int *x)
{
 if(S->top==-1)
   return 0;
 else
   *x=S->stack[S->top];
   S->top--;
 return 1;
}
 
 
void conversion(int N)
{
  Stack S;int x;
  InitStack(&S);
  while(N>0)
  {
   x=N%2;
   Push(&S,x);
   N=N/2;
  }
  while(!IsEmpty(&S))
  {
    Pop(&S,&x);
    printf("%d\n",x);
 
  }
}
 
 
int main()
{int N;
 printf("Please input a integer :\n");
 scanf("%d",&N);
 conversion(N);
 return 0;
 }

你可能感兴趣的:(数据结构)