进制转换(栈的应用code)
2017-08-06 16:19
323 查看
进制转换,指的是将某一种进制的数转换为另一种进制的数表示。在计算机领域经常用到,二进制,十进制,十六进制之间的相互转换。
本文基于栈这一工具实现进制的转换,主要是因为在数学上,我们利用短除法来解决这一问题,先求得的余数在表达上放在最后,这种机制跟栈的机制很像。
首先我们先建立栈,并且保证其具有initial(),pop(),push(),is_empty()等基本操作。代码如下:
1.建立一个关于栈的结构体:
2.initial()等操作函数:
3.进制转换
本文基于栈这一工具实现进制的转换,主要是因为在数学上,我们利用短除法来解决这一问题,先求得的余数在表达上放在最后,这种机制跟栈的机制很像。
首先我们先建立栈,并且保证其具有initial(),pop(),push(),is_empty()等基本操作。代码如下:
1.建立一个关于栈的结构体:
typedef struct stack { char* base; char* top; int lengrh; }stack;
2.initial()等操作函数:
void initial_stack(int n, stack* s) { s->base = (char*)malloc(n * sizeof(char)); s->lengrh = n; s->top = s->base; } void push_stack(char ch, stack* s) { if (s->top - s->base == s->lengrh) { printf("full"); return; } *(s->top++) = ch; void pop_stack(stack* s) { if (s->top == s->base) { printf("empty"); return; } printf("%c ", *--s->top); } bool empty(stack* s) { if (s->base == s->top) return true; else return false; } void get_top(stack* s) { printf("%c ", *(s->top - 1)); } void clearn_stack(stack* s) { if (s->base) free(s->base); }
3.进制转换
void number_convert(stack* s, int value,int hex) { char digit[] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' }; do { push_stack(digit[value % hex], s); } while (value /= hex); while(empty(s)==false) { pop_stack(s); } }
相关文章推荐
- android 应用开发code
- CodeProject 2006.11 编程语言应用投票结果表
- elasticsearch client java 简单code 应用
- C++程序调用Python的函数(简单应用)及Ubuntu16.04下codeblocks的环境配置
- codeforces round 17 D(扩展欧拉函数的应用)
- codevs 星际跳跃并查集的应用
- [转]在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置
- Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migrations更改数据库架构并保留历史数据
- 在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置
- Longest k-Good Segment codeforces 616D map 简单应用
- 数据结构笔记——进制转换(栈的简单应用)(SDOJ 2131)
- JAVA迷宫算法&进制转换---栈的典型应用
- Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1)应用闪退
- 将 UrbanCode Deploy 用于 Docker 应用的持续交付
- Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
- 【数据结构】栈应用之进制转换
- Educational Codeforces Round 17 C && codeforces 762C C. Two strings 详细的题解 (前后缀应用)
- 数据结构 栈应用(进制转换)
- codevs2058 括号序列--栈基础应用
- iOS 添加 Watch OS 1 应用后无法运行 An error was encountered while running (Domain = LaunchServicesError, Code = 0)