用栈实现十进制转八进制在Win-TC下运行(数据结构)
2013-04-10 16:00
141 查看
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<conio.h> #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int SElemType; typedef struct{ SElemType *base; SElemType *top; SElemType stacksize; }SqStack; int InitStack(SqStack *S) /*构造一个空栈*/ { S->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S->base) exit(OVERFLOW); /*存储分配失败*/ S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } int Push(SqStack *S,SElemType e) /*插入元素e为新的栈顶元素即入栈*/ { if(S->top-S->base>=S->stacksize) /*栈满,追加存储空间*/ { S->base=(SElemType *)realloc(S->base, (S->stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S->base) exit(OVERFLOW); S->top=S->base+S->stacksize; S->stacksize+=STACKINCREMENT; } *S->top=e; /*printf("%d",*S->top);*/ /*检查出栈的结果*/ S->top++; return OK; } int StackEmpty(SqStack *S) /*判断栈是否为空*/ { if(S->base==S->top) return OK; else return ERROR; } int Pop(SqStack *S,SElemType *e) /*出栈*/ { if(S->top==S->base) return OVERFLOW; *e=*(--S->top); return OK; } void conversion() /*十进制转八进制*/ { SqStack S; int N; int e; InitStack(&S); printf("Input the N:"); scanf("%d",&N); while(N) { e= N%8; printf("%d",e); Push(&S,e); N=N/8; } while(!StackEmpty(&S)) { Pop(&S,&e); printf("%d",e); } } void main() { conversion(); getch(); }
相关文章推荐
- 【数据结构】 栈实现 十进制到八进制的转化
- 轻易实现基于linux或win运行的聊天服务端程序
- 数据结构 严蔚敏 清华大学出版社 第一章 抽象数据类型 三元组的实现 成功编译并运行
- 八进制与十进制相互转换c++代码实例及运行结果
- 八进制与十进制相互转换c++代码实例及运行结果
- 【C语言】简易实现八进制转十进制(最大四位数)
- 进制转换 十进制转化为八进制 通过栈实现
- 严蔚敏 数据结构 二叉树 代码C语言实现 用C++编译器运行
- C++类模板 实现队列的链式存储结构算法 《数据结构》(北京科海) 部分代码摘抄,自己编写运行
- 栈的实现 (数据结构 严蔚敏 清华大学出版社 第三章 抽象数据类型 成功编译并运行)
- 轻易实现基于linux或win运行的聊天服务端程序
- PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
- [常用工具]win系统下通过修改环境变量实现“开始-运行”来打开应用程序
- 严蔚敏 数据结构 栈 代码C语言实现 用C++编译器运行
- 在TC中实现独立图形运行
- printf函数的实现vc6.0和win_tc
- 用递归函数实现十进制转八进制
- 数据结构(C语言版)数制转换,用栈来实现十进制换成八进制的数
- [置顶] 栈应用:实现二进制转八进制、十进制、十六进制
- 数据结构--二进制转化为十进制的实现