栈在进制转化中的体现
因为在该问题的解决过程中与栈中的数据元素进栈和出栈相类似,所以可以运用栈的进栈与出栈操作来解决。
代码:
#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; }
