码迷,mamicode.com
首页 > 其他好文 > 详细

用堆栈实现数制转换(十进制转二进制)

时间:2014-11-11 02:06:10      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:堆栈   数制转换   

    /*************************************stack.h********************************/
    #define MAXSIZE 32
    #define OVERFLOW -1
    #define ERROR -2
    #define DATATYPE int
    
    typedef enum{FALSE, TRUE} BOOL;
    
    typedef struct
    {
          DATATYPE * data;
          int top;
    }STACK;
    
    void initStack(STACK * ps)
    {
         ps->data = (DATATYPE *)malloc(MAXSIZE*sizeof(DATATYPE));
         ps->top = -1;
    }
    
    BOOL empty(STACK * ps)
    {
         if (ps->top == -1)
         {
              printf("/nstack empty./007");
              return TRUE;
         }
         return FALSE;
    }
    
    BOOL full(STACK * ps)
    {
         if (ps->top == MAXSIZE -1)
         {
              printf("stack full./007/n");
              return TRUE;
         }
         return FALSE;
    }
    
    void push(STACK * ps, DATATYPE element)
    {
         if (!full(ps))
         {
             ps->data[++ps->top] = element;
         }
    }
    
    DATATYPE pop(STACK *ps)
    {
         if (empty(ps))
         {
              return OVERFLOW;
         }
         return ps->data[ps->top--];
    }
    
    DATATYPE getTop(STACK * ps)
    {
         if (!empty(ps))
            return ps->data[ps->top];
         return ERROR;
    }
    
    void clearStack(STACK * ps)
    {
         ps->top = -1;
    }
    
    void destroy(STACK * ps)
    {
         free(ps->data);
    }
    
/*****************************conver.c******************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include "stack.h"
    
    int main()
    {
         STACK stack;
         int num;
         int temp;
         initStack(&stack);
         printf("please input a number:");
         scanf("%d", &num);
         while(num)
         {
              push(&stack, num%2);
              num = num/2;
         }
         while(!empty(&stack))
         {
               printf("%d", pop(&stack));
         }
         return 0;
    }


用堆栈实现数制转换(十进制转二进制)

标签:堆栈   数制转换   

原文地址:http://hthinker.blog.51cto.com/5611549/1575153

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!