栈在进制转化中的体现
因为在该问题的解决过程中与栈中的数据元素进栈和出栈相类似,所以可以运用栈的进栈与出栈操作来解决。
代码:
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100
#define OK 1
#define ERROR 0
typedef struct{
int *top;
int *base;
int stacksize;
}SeqStack;
int Initstack(SeqStack &s){
s.base=(int *)malloc(Maxsize*sizeof(int));
if(!s.base)
return ERROR;
s.top=s.base;
s.stacksize=Maxsize;
}
int Push(SeqStack &s,int n){
if(s.top-s.base==Maxsize)
return ERROR;
*s.top++=n;
}
int Pop(SeqStack &s){
int n;
if(s.base==s.top)
return ERROR;
while(s.top!=s.base){
n=*--s.top;
printf("%d",n);
}
}
int Converse(int N){
SeqStack s;
Initstack(s);
while(N){
Push(s,N%2);
N=N/2;
}
Pop(s);
}
int main(){
int i;
printf("请输入整数:");
scanf("%d",&i);
printf("该数的二进制为:");
Converse(i);
return 0;
}