用栈来实现进制间的转换实际上只是利用了栈的“先进后出”的原则,实际上完全可以不用栈来实现进制间的转换,可以将数组逆置来代替栈的作用,而且代码较少。
//
// 利用栈来实现进制转换
//
//
/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100
typedef struct SeqStack
{
int data[MAXSIZE] ;
int top ;
int base ;
} SeqStack ;
void InitStack( SeqStack * S )
{
S->top = 0 ;
S->base = 0 ;
}
void Push( SeqStack * S , int elem )
{
if( S->top - S->base + 1 >= MAXSIZE )
{
printf("栈已满无法进行插入操作!\n") ;
exit(0) ;
}
S->data[S->top++] = elem ;
}
void Pop( SeqStack * S , int * elem )
{
if( S->base == S->top )
{
printf("栈为空,无法进行出栈操作!") ;
exit(0) ;
}
*elem = S->data[--S->top] ;
}
// 将十进制转换为二进制
void decimalToBinary( int number , char * binary )
{
SeqStack S ;
int elem ;
int remainder ;