数据结构c 进制转换问题(栈)

来源:互联网 发布:系统解剖学网络公开课 编辑:程序博客网 时间:2024/06/05 14:46
   用栈来实现进制进制转换  应使用辗转相除法 注意栈的操作    #include <stdio.h>        #include <stdlib.h>              #define S_SIZE 100     #define STACKINCREMENT 10          typedef struct SqStack{           int *base;         int top;            int stacksize;       }SqStack;            //初始化空栈         void InitStack(SqStack &S)        {          S.base=(int *)malloc(S_SIZE*sizeof(int));          S.stacksize=S_SIZE;            S.top=-1;      }      //判断空栈      int StackEmpty(SqStack &S)        {           if(S.top==-1)               return 1;           else               return 0;        }     //判断栈满      int  StackFull(SqStack &S)      {         if(S.top==S.stacksize)               return 1;           else               return 0;        }         //进栈      void push(SqStack &S,int x)        {         if(StackFull(S))          printf("栈满\n");        S.base[++S.top]=x;       }        //出栈      int pop(SqStack &S)        {        int x;        if(StackEmpty(S))           printf("栈空\n");        x=S.base[S.top];         S.top--;        return x;      }       //进制转化函数      void convert(SqStack &S,int N,int n)        {          int i,x;         do           {          push(S,N%n);            N/=n;          } while (N!=0);                   while(!StackEmpty(S))          {           x=pop(S);          if(x>9)          {             if(x==10) x='A';          if(x==11) x='B';          if(x==12) x='C';          if(x==13) x='D';          if(x==14) x='E';          if(x==15) x='F';    //16 进制的转换                     printf("%c",x);          }          else                printf("%d",x);          }          printf("\n");        }       int main()        {           int n,N;//要转换成的进制数和要转换的数           SqStack s;           scanf("%d%d",&n,&N) ;                  InitStack(s);          printf("%d转换为%d进制后为:\n",n,N);            convert(s,n,N);                              return 0;   } 这样就可以啦..........
原创粉丝点击