顺序栈十进制转二进制
时间: 2024-01-07 20:20:03 浏览: 110
顺序栈是一种栈的存储结构,它是用一段连续的存储单元依次存储栈中的元素,栈顶指针指向栈顶元素。顺序栈可以用数组来实现。十进制转二进制是指将一个十进制数转换为二进制数。顺序栈可以用来实现十进制转二进制的功能。具体实现方法如下:
1. 定义一个顺序栈,用于存储二进制数。
2. 输入一个十进制数,将其不断除以2,将余数压入栈中,直到商为0。
3. 依次出栈,输出栈中的元素,即为该十进制数的二进制表示。
以下是代码实现:
```
#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;
}
```
阅读全文