十进制转换二进制--栈实现
C语言十进制转换二进制,用顺序栈实现。
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20 //静态顺序栈存储的最大空间
typedef struct
{
int data[MAXSIZE];//静态顺序栈可用的最大容量
int top;//栈顶
}SqStack;
void InitStack(SqStack &S)//栈的初始化
{
S.top = -1;//静态顺序栈中,使S.top=-1便是对栈的初始化
}
int Push(SqStack &S,int e)//进栈
{
if(S.top==MAXSIZE-1)//判断栈是否为满
{
printf("栈满!\n");
return 0;
}
S.data[++S.top]=e;//S.top自加一,使S.top=0,使输入的e值导入栈中
return 0;
}
void Pop(SqStack &S)//使栈顶元素出栈,并输出栈顶元素,且栈长减一
{
if(S.top == -1)//判断栈是否为空
printf("栈空!\n");
else
printf("%d",S.data[S.top--]);//输出栈顶元素
}
void Binary(SqStack S)//十进制转二进制函数
{
int a,
i = 0;
printf("请输入十进制数: ");
scanf("%d",&a);//输入任意的十进制数
while(a)//循环结束条件是a为0
{
Push(S,a%2);//余数进栈
a = a/2;//由于是整数形式,不存在除不尽的状况,假设a=1,除2等于0
i++;//记录进栈多少次 ,方便出栈操作
}
while(i)//循环终止条件是i为0
{
Pop(S);//依次输出栈顶元素
i--;
}
}
int main()
{
SqStack S;
InitStack(S);//创建一个栈,并初始化
Binary(S);//进制转换
return 0;
}
(完)
还没有评论,来说两句吧...