数值转换

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41596915/article/details/86531040

将一个十进制数转换成二进制,每次求得的各位二进制数入栈,全部计算完成后出栈输出

顺序栈的结构体定义

typedef struct TagStack{//栈顶进,栈顶出,先进后出
	int List[MAXSIZE];//顺序栈
	int top;//栈顶指针
	int base;//栈底指针
}Stack,*LinkStack;

转换入栈函数

void ValueSwitch(LinkStack &S,int N){
	while(N!=0){
		S->List[S->top+1]=N%2;//二进制数入栈
		N=N/2;
		S->top++;//入栈,栈顶指针后移
	}
}

源代码

#include <iostream>
using namespace std;
#include <stdlib.h>

#define MAXSIZE 20

typedef struct TagStack{//栈顶进,栈顶出,先进后出
	int List[MAXSIZE];//顺序栈
	int top;//栈顶指针
	int base;//栈底指针
}Stack,*LinkStack;

void ValueSwitch(LinkStack &S,int N){
	while(N!=0){
		S->List[S->top+1]=N%2;//二进制数入栈
		N=N/2;
		S->top++;//入栈,栈顶指针后移
	}
}

void main(){
	int N;
	cout<<"请输入十进制数:";
	cin>>N;

	LinkStack S;
	S=new Stack;//栈初始化
	S->top=0;
	S->base=0;

	ValueSwitch(S,N);

	cout<<endl;

	cout<<N<<"的二进制数:";
	while (S->top!=S->base){
		cout<<S->List[S->top]<<' ';
		S->top--;//出栈,栈顶指针前移
	}


	system("pause");
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41596915/article/details/86531040