数进制的转换(十进制向其他进制转换)

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:17:23
#include "stdio.h"
#include "iostream.h"
#include "malloc.h"
#include "stdlib.h"
#include "math.h"
#include "windows.h"
#define ok 1
#define error 0
#define overflow 0
#define stack_init_size 100
#define stackincrement 30
typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;
sqstack initstack(sqstack s){
s.base=(int*)malloc(stack_init_size*sizeof(int));
if(!s.base)exit(-2);
s.top=s.base;
s.stacksize=stack_init_size;
return (s);
}
int push (sqstack s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(int));
if(!s.base)exit(overflow);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
*s.top++=e;
return ok;
}
int pop (sqstack s,int e){
if(s.top==s.base)return err

/**************************************************
*******十进制和其它进制的转换******************
**********************************************/

#include <iostream>
using namespace std;

#define GAP 48
#define AST 55

struct NUM //将转化后的数的各个位上的数转化位相应的字符来储存
{
char number;
NUM *next;
};

void push ( int num,int y )
{
NUM *pTemp,*pHead,*p;
int i=0,m;

pHead = new NUM; //开辟一个内存空间
pHead -> next = NULL;

do{
if( num % y < 10 )
pHead -> number = num % y + GAP;
else
pHead -> number = num % y + AST; //在转化位十六进制时大于等于10的数字用相应的字母表示
pTemp = pHead;
pHead = new NUM;
pHead->next = pTemp; //创建链表
i ++;
}while(num = num / y);

m = i;
for(i = 0,pTemp = pHead->next;pTemp != NULL && i < m;i ++,pTemp = pTemp -> next)
cout<<