栈的应用之进制转换
来源:互联网 发布:js 获取日期的年月日 编辑:程序博客网 时间:2024/06/04 18:31
利用栈的后进先出性质写一个10到8进制转换的小程序,数组方式实现栈,代码如下:
#include<stdio.h>#include<stdlib.h>#define stack_size 100#define stack_crement_size 10typedef 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;}
运行结果
0 0
- 栈的应用之进制转换
- 栈的应用之进制转换
- 栈的应用之进制转换
- 栈的应用之进制转换code_legend
- 栈的应用举例之进制转换
- 栈的应用实例之——进制转换
- 【数据结构】栈应用之进制转换
- 数据结构栈应用之进制转换
- 栈应用之任意进制转换
- JAVA基础之进制转换,查表法的应用
- 栈的应用之数制转换
- 栈的应用之数制转换
- 栈的应用之数制转换
- 栈的应用之数制转换
- 数据结构 栈的应用 进制转换
- 栈的应用-进制转换
- 栈的应用---进制转换
- 栈的应用之一----------进制转换
- 基于Android的OpenGL ES 2.0学习笔记(1)
- 10.21
- 分享大家一些sublime text3 的注册码
- 浅析JAVA中toString方法的作用
- 10.22
- 栈的应用之进制转换
- 10.23
- execute、executeQuery和executeUpdate之间的区别
- java各种toString方法
- 第5节--python数据类型--numeric
- 数据结构实验 矩阵的转置
- HDOJ 5738 Eureka
- Windows:使用virtualenv创建虚拟环境,安装pip
- codeforces 522A Reposts-找最长链长度dp[x]