进制转换--c语言栈实现

#include

#define size 40

typedef struct{

    int data[size];

    int top;

}Stack;

void clear_Stack(Stack *s){//清空栈

    s->top=0;

}

int Is_Empty(Stack *s){//判空

    if(0==s->top){

        return 1;

    }

    return 0;

}

int Is_Full(Stack *s){//判满

    if(size==s->top){

        return 1;

    }

    return 0;

}

void in_Stack(Stack *s,int x){//入栈

    if(!Is_Full(s)){

        s->data[s->top]=x;

        s->top++;

    }

}

void out_Stack(Stack *s,int *x){//出栈

    if(!Is_Empty(s)){

        s->top--;

        *x=s->data[s->top];

    }

}

void all_Stack(Stack *s){//遍历栈

    int i;

    for(i=s->top-1;i>=0;i--){

        printf("%c",s->data[i]);

    }

}

int main(){

    Stack s;

    clear_Stack(&s);


//    in_Stack(&s,1);

//    in_Stack(&s,2);

//    in_Stack(&s,3);

//    in_Stack(&s,4);

//    in_Stack(&s,5);

//

//    out_Stack(&s);


    char num[]="0123456789ABCDEF";

    int N=2016;

    int mod;

    while(N!=0){

        mod=N%16;

        in_Stack(&s,mod);

        N/=16;

    }

    int e=0;

    while(!Is_Empty(&s)){

        out_Stack(&s,&e);

        printf("%c",num[e]);

    }

    all_Stack(&s);

    printf("\n");

    return 0;

}

你可能感兴趣的:(进制转换--c语言栈实现)