顺序栈之进制转换(C实现)
2015-11-22 12:17
211 查看
data.h
stack.h
VC6运行效果图、
*这个程序是将10进制的1348转换成8进制的2504
#ifndef _DATA_H #define _DATA_H typedef int ElemType; #endif
stack.h
#ifndef _STACK_H #define _STACK_H #include "data.h" #define STACK_INIT_SIZE 10 #define STACK_INCREME 10 typedef struct { ElemType * base; ElemType *top; int size; }STACK; STACK * InitStack(); void DestroyStack(STACK *s); int Push(STACK *s,ElemType *e); int Pop(STACK *s,ElemType *e); int IsEmpty(STACK *s); #endifstack.c
#include "stack.h" #include <stdio.h> #include <stdlib.h> STACK * InitStack() { STACK * s = (STACK *)malloc(sizeof(STACK)); if(s == NULL) exit(0); s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); if(s->base == NULL) exit(0); s->top = s->base; s->size = STACK_INIT_SIZE; return s; } void DestroyStack(STACK *s) { free(s->base); free(s); } int Push(STACK *s,ElemType *e) { if(s == NULL || e == NULL) return 0; if(s->top - s->base >= s->size) { s->base = (ElemType *)realloc(s->base, (s->size + STACK_INCREME) *sizeof(ElemType)); if(s->base == NULL) return 0; s->top = s->base + s->size; s->size = s->size + STACK_INCREME; } // *s->top = *e; // s->top ++; *s->top++ = *e; return 1; } int Pop(STACK *s,ElemType *e) { if(s == NULL || e == NULL) return 0; if(s->base == s->top) return 0; *e = *--s->top; return 1; } int IsEmpty(STACK *s) { return s->top == s->base ? 1 : 0; }main.c
#include "stack.h" #include <stdio.h> int main() { int num = 1348,temp; STACK * s = InitStack(); while(num) { temp = num % 8; Push(s,&temp); num /= 8; } printf("result is "); while(!IsEmpty(s)) { Pop(s,&temp); printf("%d",temp); } printf("\n"); DestroyStack(s); }
VC6运行效果图、
*这个程序是将10进制的1348转换成8进制的2504
相关文章推荐
- 特殊的数字
- mysqli编程入门
- HTTP长连接和短连接
- 有关大数据,你不一定知道的几个冷知识
- DDuilib
- c语言:编辑程序输出取数组地址
- 键盘事件抽奖系统实例
- 机房重构之--数据库设计说明书
- c语言:编辑一个有趣的死循环程序并对其修改,仅仅是一个“=”号的差别
- java nio socket通信简单入门示例
- 凯文·凯利又出预言:未来科技将由这四股力量推动!
- web.xml详解
- iOS:UICollectionView纯自定义的布局:瀑布流布局
- spark源码阅读之network(2)
- spark源码阅读之network(1)
- ARM的BIN文件反汇编方法
- 欢迎使用CSDN-markdown编辑器
- 线段树套线段树 -转自CSDN博客nash142857 -POJ2155
- zzuli求最大值
- c语言:有趣的printf输出,“4321”