利用栈进行进制之间的转化

                                                       栈在进制转化中的体现 

     因为在该问题的解决过程中与栈中的数据元素进栈和出栈相类似,所以可以运用栈的进栈与出栈操作来解决。

代码:

#include
#include
#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;
}


你可能感兴趣的:(数据结构)