对于任意的一个正整数n,都可以转换一个d进制数,一个简单的算法是基于原理
n=(n/d)*d+n%d(其中/ 表示整除)的。例如:(668)10=(1234)8
利用栈先进后出的特点:
核心代码:
void Conversion(int n,int d){
LinkList St;
InitStack(St);
int e;
while(n){
Push(St,n%d);
n=n/d;
}
if(StackEmpty(St)) Push(St,0);
while(!StackEmpty(St)){
Pop(St,e);
printf("%d",e);
}
puts("");
}
完整的测试代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define SElemType int
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
LNode (int Data=0,struct LNode * Next=NULL){
data=Data;
next=Next;
}
}LNode ,*LinkList ;
void InitStack(LinkList &LS){
LS=NULL;
}
bool StackEmpty(LinkList LS){
return LS?fals