版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
将一个十进制数转换成二进制,每次求得的各位二进制数入栈,全部计算完成后出栈输出
顺序栈的结构体定义
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");
}