数据结构 栈的应用任意进制转换(c语言实现)
2015-11-29 16:48
375 查看
#include "stdlib.h" #include "stdio.h" typedef struct Stack{ int *base; int *top; int stacksize; }SqStack; void InitStack(SqStack &s){ s.base=(int *)malloc(100*sizeof(int)); if(!s.base) exit(0); s.top=s.base; s.stacksize=100; return; } void Push(SqStack &s,int elem){ if(s.top-s.base>=s.stacksize){ s.base=(int *)realloc(s.base,(s.stacksize+10)*sizeof(int)); if(!s.base) exit(0); s.top=s.base+s.stacksize; s.stacksize+=10; } *s.top++=elem; return; } void Pop(SqStack &s,int &backElem){ if(s.top==s.base) return; backElem=*--s.top; return; } int isEmpty(SqStack &s){ if(s.top==s.base) {return 0;} else {return 1;} } int main(){ SqStack s; int n,d,back; InitStack(s); while(true){ printf("\n"); printf("请输入要转换的数字:"); scanf("%d",&n); printf("请输入要转换成几进制:"); scanf("%d",&d); if(n==0) {printf("转换完成:0"); continue;} while(n){ Push(s,n%d); n=n/d; } printf("转换完成:"); if(d==16){ while(isEmpty(s)==1){ Pop(s,back); if(back>=10){ switch (back){ case 10:printf("A"); break; case 11:printf("B"); break; case 12:printf("C"); break; case 13:printf("D"); break; case 14:printf("E"); break; case 15:printf("F"); break; default:break; } }else{ printf("%d",back); } } } else{ while(isEmpty(s)==1){ Pop(s,back); printf("%d",back); } } } return 0; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 100 个最佳 Ubuntu 应用(中)
- 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
- 如何写好 C main 函数
- 24 个必备的 Linux 应用程序
- 注册表趣味应用小集
- 远程控制技术的应用
- 路由器访问列表的应用
- xDSL技术及其应用
- Lua和C语言的交互详解
- 基于XML的桌面应用
- SQL Server 2008 R2 应用及多服务器管理
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C++基于栈实现铁轨问题
- 使用C语言判断英文字符大小写的方法