栈的应用举例(数制转换问题)???

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:06:25
有谁能帮我解释一下下面这个算法?最好是每条语句都有解释,在此先谢了!
typedef int datatype;
void conversion(int N,int r)
{ SeqStack s;
datetype x;
Init_SeqStack(&s);
while ( N )
{ Push_SeqStack ( &s ,N % r );
N=N / r ;
}
while ( Empty_SeqStack(& s ) )
{ Pop_SeqStack (&s ,&x ) ;
printf ( “ %d ”,x ) ;
}
}

typedef int datatype; //为int类型声明一个别名叫datatype
void conversion(int N,int r) //这个也不用说了吧
{ SeqStack s; //声明了一个SeqStack类型的变量
datetype x;
Init_SeqStack(&s); //初始化一个栈
//当N不为0时,做while中的循环语句
while ( N )
{ Push_SeqStack ( &s ,N % r ); //将N%r的结果入栈
N=N / r ;
}
//栈不为空时执行以下循环语句
while ( Empty_SeqStack(& s ) )
{ Pop_SeqStack (&s ,&x ) ; //出栈操作
printf ( “ %d ”,x ) ; //依次输出出栈结果
}

}
/*实现了将一个十进制数N转化为r进制的数
如十进制数字6将其转化成二进制数即r=2,你可以代进去一步一步地走,程序很短,自己用笔和脑子就可以运行出来了,入栈的顺序为011,出栈的顺序为110,即6对应的二进制数110*/