单向链栈实现进制转换(十进制转换成N进制数【正数】)
2014-02-23 10:54
501 查看
#include <stdio.h> #include <stdlib.h> #include <malloc.h> //数据节点结构体定义 typedef struct numNode { int data; struct numNode *next; }numNode; //栈结构定义 typedef struct { int length; numNode *end; }numStack; numStack * initNumStack(); //创建并初始化栈 void push(numStack *stack, int num); //入栈操作 numNode * pop(numStack *stack); //出栈操作 void destroy(numStack *stack); //栈的销毁 void display(numStack *stack); //栈的打印 char num_to_char(const int num); //数字转换成字符 numStack * convert(int num, const int radix); //十进制数num转换成radix进制数 //创建并初始化空栈 numStack * initNumStack() { numStack *stack = (numStack *)malloc(sizeof(numStack)); if (NULL == stack) exit(-1); stack->length = 0; stack->end = NULL; return stack; } //压栈操作 void push(numStack *stack, int num) { if (NULL == stack) exit(-1); numNode *num_node = (numNode *)malloc(sizeof(numNode)); num_node->data = num; if (NULL == num_node) exit(-1); num_node->next = stack->end; stack->end = num_node; ++stack->length; } //出栈操作 numNode * pop(numStack *stack) { numNode *node_tmp = NULL; if (NULL == stack || 0 == stack->length) return NULL; node_tmp = stack->end; stack->end = node_tmp->next; --stack->length; return node_tmp; } //销毁栈 void destroy(numStack *stack) { numNode * tmp = NULL; while(NULL != (tmp = pop(stack))) free(tmp); if(stack) free(stack); } //打印栈数据 void display(numStack *stack) { numNode * tmp = NULL; if (stack) { tmp = stack->end; while(tmp) { printf("%c ", num_to_char(tmp->data)); tmp = tmp->next; } printf("\n"); } } //数字转换成字符 char num_to_char(const int num) { if(num < 10) return '0'+num; else return 'A'+num-10; } //十进制转换成n进制的实现函数 numStack * convert(int num, const int radix) { numStack *stack = initNumStack(); while (num) { push(stack, num%radix); num /= radix; } return stack; } int main() { numStack * resoult = convert(128, 7); display(resoult); destroy(resoult); return 0; }
相关文章推荐
- 用数组实现十进制与其他进制的转换
- 巧用一条SQL 实现其它进制到十进制转换
- C++十进制到各种进制转换的实现
- 链栈实现10进制转换2进制
- Java实现十进制到各种进制的转换
- 用一条SQL 实现其它进制到十进制的转换
- 十进制转换为任意进制 java实现
- 用堆栈实现十进制向其它进制间的转换
- 用栈实现进制转换十进制转换成:二进制数、八进制数、十六进制数
- 巧用一条SQL 实现其它进制到十进制转换
- PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]
- 递归实现十进制到2(其他)进制的转换
- 巧用一条SQL 实现其它进制到十进制转换
- ORACLE中巧用一条SQL 实现其它进制到十进制转换(转)
- 巧用一条SQL 实现其它进制到十进制转换
- 进制转换(十进制转换N进制)的实现
- 用栈(链式)实现十进制到其他进制的转换:
- python十分简单实现十进制到任意进制的转换
- 巧用一条SQL 实现其它进制到十进制转换
- NOJ 1012 进制转换(十进制转换成任意进制)