栈的应用之进制转换
2016-10-23 21:37
155 查看
利用栈的后进先出性质写一个10到8进制转换的小程序,数组方式实现栈,代码如下:
运行结果
#include<stdio.h> #include<stdlib.h> #define stack_size 100 #define stack_crement_size 10 typedef int Elemtype; ///////////////////声明一个栈 typedef struct Stack { Elemtype *top; Elemtype *base; int stacksize; }sqstack; //函数声明 void IntiStack(sqstack *s); int Push(sqstack* s,Elemtype e); void Pop(sqstack* s,Elemtype *e); int StackLen(sqstack s); int StackEmpty(sqstack* s); void DestoryStack(sqstack* s); /////////////////初始化栈 void IntiStack(sqstack *s) { s->base = (Elemtype*)malloc(sizeof(Elemtype)*stack_size); if(!s->base) exit(0); s->top = s->base; //设置栈为空 s->stacksize = stack_size; } /////////////////入栈操作 int Push(sqstack* s,Elemtype e) { if(s->top - s->base >= s->stacksize) //判断是否栈满 { s->base = (Elemtype*)realloc(s->base,(s->stacksize + stack_crement_size)*sizeof(Elemtype)); if(!s->base) exit(0); s->top = s->base + s->stacksize; //重新设置栈顶 s->stacksize += stack_crement_size; //重新设置栈的大小 } *(s->top) = e; s->top++; return 1; } /////////////////出栈操作 void Pop(sqstack* s,Elemtype *e) { if(s->top == s->base) //如果栈为空 return; *e = *--(s->top); } /////////////////求栈的当前容量 int StackLen(sqstack s) { return s.top - s.base; } /////////////////清空栈 int StackEmpty(sqstack* s) { return (s->stacksize == 0); } /////////////////销毁栈 void DestoryStack(sqstack* s) { int i,len; len = s->stacksize; for( i = 0; i <len; i++) { s->base++; free(s->base); } s->base = s->top = NULL; s->stacksize = 0; } int main(void) { sqstack s; int i,c,k; int j = 0; //用来记录转化后的8进制数位数 int N; printf("请输入一个十进制数:"); scanf("%d",&N); int W = N; IntiStack(&s); //初始化栈 while(N != 0) //除k取余法转换,并把余数入栈 { k = N%8; Push(&s,k); N = N/8; j++; } printf("十进制数 %d 转化为八进制数为: ",W); for( i=0; i<j; i++) { Pop(&s,&c); printf("%d ",c); } //DestoryStack(&s); printf("\n"); return 0; }
运行结果
相关文章推荐
- 不同进制数的转换及应用
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- JAVA基础之进制转换,查表法的应用
- 堆栈的简单实现之二:进制转换方面的简单应用(C语言实现)
- 栈的应用——数值转换为任意进制
- 栈的应用:进制转换和简易计算器的实现
- 栈的应用 10进制的转换
- 数据结构栈应用之进制转换
- 栈的应用之进制转换
- [置顶] 【一起来学C语言】常用进制的转换与应用(下)
- 新手学习数据结构与算法---堆栈的应用之进制转换
- 栈的使用和简单进制转换的应用
- 堆栈的应用-进制的转换
- 字符串拷贝与进制转换的简单应用
- 栈的应用之进制转换code_legend
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- 不同进制数的转换及应用
- 重温数据结构-栈的应用:进制转换,括号匹配检测,行编辑,迷宫求解,求表达式的值
- 栈的应用之一----------进制转换
- 栈的应用一:JavaScript实现数字进制间的相互转换