用链栈实现任意进制的转化

来源:互联网 发布:centos 编译php7 编辑:程序博客网 时间:2024/05/19 21:01
 

    任意进制的转化基本思路是以十进制为中转,先将其他进制转为十进制,再由十进制转目的进制

/* 栈的结构类型 */typedef char ElemType;typedef struct Stack{   ElemType elem[N];   int top;}Stack;//初始化栈void InitStack(Stack *S){   S->top=-1;}//出栈void Pop(Stack *S){  if(S->top==-1){      printf("stack is null");   }else{      S->top--;   }}//入栈void Push(Stack *S,ElemType e){   S->top++;   S->elem[S->top]=e;}//打印栈void showStack(Stack *S){   int i;   if(S->top==-1){      printf("stack is null");   }else{      for(i=S->top;i>=0;i--){        printf("%c",S->elem[i]);      }   }   printf("\n");}//十进制转其他进制void statechange(Stack *S,int n,int i){    int a=n,b;    char c;    do{      b=a%i;      if(b>9){        c=b-10+'A';      }else{        c=b+'0';      }      Push(S,c);      a=a/i;    }while(a>0);}//其他进制转十进制int changestate(Stack *L,int i){   int k,n=0,l=L->top,g;   for(k=0;k<=l;k++){      g=L->elem[k]-'0';      if(g>i){          printf("输入的进制错误");          return -1;      }else{           n+=pow(i,l-k)*(g);      }   }   return n;}


0 0
原创粉丝点击