数据结构-栈篇----应用:进制转换(c语言版)
来源:互联网 发布:种族歧视 知乎 编辑:程序博客网 时间:2024/06/07 03:00
#include<stdio.h>
#define MAXSIZE 100 //空间大小
typedef struct //结构体定义栈的栈顶,栈尾和栈的空间大小
{
int *base;
int *top;
int stacksize;
}SqStack;
bool InitStack(SqStack &S) //定义一个栈
{
S.base = new int[MAXSIZE]; //为栈开辟空间大小为MAXSIZE的栈
if (!S.base)
return false;
S.top = S.base;
S.stacksize = MAXSIZE;
return true;
}
bool StackEmpty(SqStack S) //判定栈是否为空
{
if (S.top == S.base)
return true;
else
return false;
}
int StackLength(SqStack S) //输出栈的实际长度
{
return S.top - S.base;
}
bool Push(SqStack &S,int e) //入栈操作
{
if ((S.top - S.base) == S.stacksize)
return false;
*S.top++ = e;
return true;
}
bool Pop(SqStack &S, int &e) //出栈操作
{
if (S.top == S.base)
return false;
e = *(--S.top);
return true;
}
int main(){ //主函数
SqStack q; //定义类型为SqStack的栈
int n, k,p; // 定义所需变量
char num[] = "0123456789ABCDEF"; //此字符数组主要是考虑了十六进制的输出情况
printf("请输入需要转换为多少进制(包括二进制,八进制,十六进制):");
scanf_s("%d", &p);
InitStack(q); //为栈开辟空间
printf("请输入一个十进制整数:");
scanf_s("%d", &n);
while (n){
Push(q, n % p); //把不同进制求出的余数存入栈
n = n / p; //把除数结果当成下一次求余的数
}
while (!StackEmpty(q)){
Pop(q, k);
printf("%c", num[k]); //循环输出
}
return 0;
}
#define MAXSIZE 100 //空间大小
typedef struct //结构体定义栈的栈顶,栈尾和栈的空间大小
{
int *base;
int *top;
int stacksize;
}SqStack;
bool InitStack(SqStack &S) //定义一个栈
{
S.base = new int[MAXSIZE]; //为栈开辟空间大小为MAXSIZE的栈
if (!S.base)
return false;
S.top = S.base;
S.stacksize = MAXSIZE;
return true;
}
bool StackEmpty(SqStack S) //判定栈是否为空
{
if (S.top == S.base)
return true;
else
return false;
}
int StackLength(SqStack S) //输出栈的实际长度
{
return S.top - S.base;
}
bool Push(SqStack &S,int e) //入栈操作
{
if ((S.top - S.base) == S.stacksize)
return false;
*S.top++ = e;
return true;
}
bool Pop(SqStack &S, int &e) //出栈操作
{
if (S.top == S.base)
return false;
e = *(--S.top);
return true;
}
int main(){ //主函数
SqStack q; //定义类型为SqStack的栈
int n, k,p; // 定义所需变量
char num[] = "0123456789ABCDEF"; //此字符数组主要是考虑了十六进制的输出情况
printf("请输入需要转换为多少进制(包括二进制,八进制,十六进制):");
scanf_s("%d", &p);
InitStack(q); //为栈开辟空间
printf("请输入一个十进制整数:");
scanf_s("%d", &n);
while (n){
Push(q, n % p); //把不同进制求出的余数存入栈
n = n / p; //把除数结果当成下一次求余的数
}
while (!StackEmpty(q)){
Pop(q, k);
printf("%c", num[k]); //循环输出
}
return 0;
}
阅读全文
1 0
- 数据结构-栈篇----应用:进制转换(c语言版)
- 数据结构C语言版进制转换
- 学习笔记------数据结构(C语言版)进制转换
- 数据结构(C语言版)栈的实现进制的转换
- 数据结构(C语言版)
- 数据结构(C语言版)
- 数据结构(C语言版)
- c语言版数据结构(奇迹冬瓜)-栈实战(2)整数进制转换<10进制到2,8,16进制>
- 数据结构(C语言版)总结
- 数据结构c语言版(题目)
- 数据结构C语言版(答案)
- 数据结构(c语言版)总结
- 学习计划:《数据结构(C语言版)》
- 《数据结构(C语言版)》综述
- 读书笔记 数据结构(c语言版)
- 数制转换(C语言版)
- 数据结构(C语言版)数制转换,用栈来实现十进制换成八进制的数
- 读《数据结构(C语言版)》(1)
- Butterknife深入剖析,自己实现Butterknife
- 支付宝(alipay)集成的注意事项
- OSPF LSA
- 静态工厂和实例工厂说明
- windows读写锁续(解决写锁饥饿)
- 数据结构-栈篇----应用:进制转换(c语言版)
- css 黑科技
- QThread详解
- poj 2694 逆波兰表达式(递归)
- 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(1)
- ASP.NET MVC4.0 登录、退出功能的简单实现
- c++
- Android地图轨迹抽稀、动态绘制
- Android夜间模式的实现方案