利用栈实现二进制转换十六进制的完整C代码
2014-11-19 12:48
363 查看
/* 二进制转换为十进制 */ #include<stdio.h> #include<stdlib.h> #define INCREMENT 8 typedef char Elemtype; typedef struct Stack { Elemtype *top; Elemtype *base; int stackSize; }Stack; Stack *initStack( int n ) //栈初始化函数 { Stack *s = (Stack *)malloc(sizeof(Stack)); s -> base = ( Elemtype * )malloc( sizeof(Elemtype) * n ); if ( s -> base == NULL ) exit(0); s -> top = s -> base; s -> stackSize = n; return s; } void Push( Stack *s, Elemtype e ) //入栈函数 { if( s->top - s->base >= s->stackSize ) { s -> base = (Elemtype *)realloc( s->base, s->stackSize + INCREMENT * sizeof(Elemtype) ); if( !s->base ) exit(0); s->top = s->base + s->stackSize; s->stackSize = s->stackSize + INCREMENT; } *(s->top) = e; s->top++; } Elemtype Pop( Stack *s ) //出栈函数 { if( s->top == s->base ) exit(0); return ( *--(s->top) ); } int StackLen( Stack *s) //求栈内元素数量 { return ( s->top - s->base ); } int main() { int length; int i; short int sum = 0; int index; int temp; Elemtype element; Stack *s = initStack( 16 ); Stack *p = initStack( 8 ); printf("请输入二进制数:\n"); scanf("%c", &element); while( element != '\n' ) { //将二进制数以字符型入栈,回车号结束输入 Push( s, element ); scanf("%c", &element); } length = StackLen( s ); while( StackLen( s ) ) { for( i=0,sum=0,index=1; (i<4)&&(StackLen(s)); i++ ) { //进制转换 '1' ----- ASC码为49 sum = sum + (Pop(s)-48) * index; index *= 2; } Push( p, sum ); } printf("转换十六进制数为:\n"); while( StackLen(p) ) { temp = Pop(p); if( temp >= '0' && temp <= '9' ) printf("%d", temp); else printf("%c", temp+'A'-10); } printf("\n"); return 0; }
相关文章推荐
- VC++.NET中用类实现带科学计数法的四则运算计算器(有完整的代码哦)(2005-05-08)
- 利用正大互联的树(treeview)结构思想整理出的完整代码
- 用js实现的十进制的颜色值转换成十六进制的代码
- 实现高效的数据库连接池(附带完整代码C#和Java实现)
- ASP.NET2.0中GRIDVIEW控件完整代码实现模版列排序!
- 利用JavaScript代码实现的圆角表格
- 如何利用JS实现对后台CS代码的调用
- 利用JScript中运算符"||"和"&&"的特殊特性实现代码精简第1/2页
- 利用JScript中运算符"||"和"&&"的特殊特性实现代码精简第1/2页
- 利用Micro3D和JSR-184使用相同代码实现旋转立方体的效果
- 利用setTimeout()函数实现函数代码的延迟执行
- PHP中利用mysql进行访问统计的思路和实现代码
- 利用newxy(新坐标),不写一行java代码实现多项查询
- 实现窗体淡入淡出的完整代码
- 一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- hchxxzx--》一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- 利用WinInet实现网页代码截取
- 在 Django 的 View 中利用 function decorator 可实现一定程度的代码重用
- asp.net下利用JS实现对后台CS代码的调用方法