首页 > 代码库 > 用堆栈实现数制转换(十进制转二进制)
用堆栈实现数制转换(十进制转二进制)
/*************************************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; }
用堆栈实现数制转换(十进制转二进制)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。