题目:
链栈
利用链栈实现将一个十进制整数转换成二进制数。然后输出
如:十进制数为出格式类似:十进制数7对应的二进制数为111,对应的八进制数为7
- 掌握要点:
- 1.十进制转换成二进制的方法
- 2.堆栈特点巧妙运用(先进后出,实现倒序)
- 相关文献:
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
运算过程
实现流程
- 建立栈
- 初始化栈
- 将余数一个个存进栈s中
- 元素出栈
- 摧毁栈
代码:
#include<stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef int elemtype;
typedef struct
{
elemtype data[MaxSize];
int top;
}SqStack; //建立一个栈
int main()
{
SqStack *s;
s = (SqStack *)malloc(sizeof(SqStack));
s->top = -1; //初始化栈
int num = 111; //待处理的数字 111
while(num > 0)
{
int m=num/2;
int n=num%2;
//n进栈
{
if(s->top == MaxSize-1)
{
printf("栈满溢出!!!
");
return 0;
}
s->top++;
s->data[s->top]=n;
}
num=m;
}
//出栈
{
while(s->top != -1)
{
int res = s->data[s->top];
s->top--;
printf("%d", res);
}
printf("
");
}
free(s); //摧毁栈
}
文件下载地址:见文章末尾