用堆栈实现数制转换(十进制转二进制)
2014-11-10 21:06
267 查看
/*************************************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; }
相关文章推荐
- 利用堆栈实现的十进制转二进制程序实现
- 利用堆栈等知识实现十进制转二进制
- c语言的一结构数据的堆栈实现问题
- 一个支持多线程同步的堆栈的实现
- 用静态数组实现一个泛型的堆栈,数组的长度当堆栈实例化时作为参数给出
- 图的深度优先遍历[非堆栈、堆栈实现]
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- C语言实现堆栈
- 堆栈,队列的实现
- 用堆栈实现十进制向其它进制间的转换
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- 堆栈计算机的原理和实现
- 图的深度优先遍历[非堆栈、堆栈实现]
- 动态数组实现的堆栈
- 链式实现的堆栈
- 类模板实现堆栈
- 堆栈的C实现
- 图的深度优先遍历(堆栈实现和非堆栈实现)
- 用堆栈思想实现AckermannFunction函数功能
- 图的深度优先遍历[非堆栈、堆栈实现]