C语言版栈的应用:进制转换
栈的应用: 进制转换中的十进制转化为二进制数
文章目录
- 前言
- 二、使用步骤
- 1.引入库
- 2.代码实现
- 总结
前言
栈:在数据结构中特点:先进后出, 先进栈的元素反而后出去,而恰好我们进制转换时, 需要将转换过来时的数逆置,此时这个时候就是利用栈特点的一个应用场景
提示:以下是本篇文章正文内容,下面案例可供参考
二、使用步骤
1.引入库
代码如下(示例):
#include //调用基本输入/输出库文件
#include //调用标准库头文件,malloc函数在这个头文件中
#include //使用系统库文件,暂停一下,看到执行结果
2.代码实现
代码如下(示例):
本例题是将23十进制数转为二进制数的一个例题:
原代码,可以之间使用
#include
#include
#include
#define MAX 50 //栈的最大存储空间typedef struct Stack
{int top; //栈顶指针int sa[MAX]; //栈的容量
}RStack;//生成一个空栈
RStack *init()
{RStack *SS;SS = (struct Stack*)malloc(sizeof(struct Stack)); //申请空间SS->top = 0;return SS;
}//进栈
void push(RStack *S, int x)
{if (S->top == MAX){printf("栈满");exit(0); //退出程序}S->sa[S->top] = x;S->top++; //往上加1(始终指向栈顶元素的上一位)
}//判断栈是否为空
bool isEmpty(RStack S)
{if (S.top == 0){return true;}return false;
}//出栈
int pop(RStack* S)
{if (isEmpty(*S)){printf("栈空");exit(0);}return S->sa[--S->top];
}//打印的过程
void display(RStack *S)
{while (S->top != 0){printf("%d", pop(S)); //利用出栈去打印一下结果, 正好可以验证栈的操作规则}
}//十进制转化为二进制
void convert(RStack *S, int x)
{int n = 0; //进栈的元素while (x > 0){n = x % 2;push(S, n);x = x / 2;}
}int main()
{RStack* S;S = init();convert(S, 23); //求一个十进制为23的二进制数printf("23的二进制数:");//display(S);system("pause");return 0;
}结果为:23的二进制数:10111
该处使用的url网络请求的数据。
总结
栈的应用有很多,但对于新入门的同学而言,在学习C语言的过程,也涉及到了进制转换这样的难题,本篇文章也是为了同学能联想到已经学习的知识去解决现有的困难。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
