【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
前言:
前面已经介绍过栈的相关操作的具体实现,那么现在就按照书上的几个例子来具体讲一下栈的具体用处。
没有看之前我写的栈的实现的同学可以去看:传送门在这里哟
因为这里要用到我前面那篇博文中的函数,我都统一归集在一个头文件中,也就是下面的"my_stack.c"
那么接下来让我们进入正题吧。
注:
本文仅代表博主本人的一些浅显的见解,欢迎大家评论学习,共同创造出一个良好的环境
对于一些问题,博主会尽量为大家解答,但是如果有疑问没有及时回答的,也希望其他热心人心帮忙解决,鄙人不胜感激。
1.数制转换
数值转换就是一个取模之后然后逆向输出的过程,这个过程就是一个最经典的先进后出的操作,也就是我们将要使用的栈的原理。
#include"my.h" //包含所有必须头文件
#include"my_stack.c" //包含栈的相关定义与操作
void conversion()
{
//操作结果:对于输入的任意一个非负10进制整数,打印输出与其等值的16进制数
SqStack s;
unsigned n; //非负整数
SElemType e;
InitStack(&s); //初始化栈
printf("请输入非负整数 n=");
scanf("%u",&n); //输入非负十进制整数n
while(n) //当n不等于0
{
Push(&s,n%16);//入栈n除以16的余数(16进制的低位)
n=n/16;
}
while(!StackEmpty(s)) //当栈不空
{
Pop(&s,&e); //弹出栈顶元素且赋值给e
if(e<=9)
printf("%d",e);
else
printf("%c",e+55);
}
printf("\n");
}
int main()
{
conversion();
return 0;
}
2.括号匹配