栈的应用1——十进制转换任何进制
2016-11-06 11:45
337 查看
//十进制的转换问题
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct List
{
char date;
struct List *next;
}NODE,*LNode;
typedef struct
{
LNode top;
int date;//计数器用来计数
}Stack,*SeqStack;
SeqStack init_satck();//初始化
int empty_stack(SeqStack);
void push_stack(SeqStack,char);
void pop_stack(SeqStack,char*);
void change(SeqStack,int,int);
char fun(int);//将int转换为char
int main(void)
{
int m,n;
SeqStack ps=init_satck();
printf("请输入十进制数:");
scanf("%d",&m);
printf("请输入转换的进制:");
scanf("%d",&n);
change(ps,m,n);
return 0;
}
SeqStack init_satck()
{
SeqStack ps;
if((ps=(SeqStack)malloc(sizeof(Stack)))==NULL)
{
printf("动态内存分配失败!\n");
exit(-1);
}
else
{
ps->top=NULL;
ps->date=0;
}
return ps;
}
int empty_stack(SeqStack ps)
{
if(ps->top==NULL)
return 0;
else
return 1;
}
void push_stack(SeqStack ps,char ch)
{
LNode p=(LNode)malloc(sizeof(NODE));
p->date=ch;
p->next=ps->top;
ps->top=p;//就是变相的一个头插法
ps->date++;//个数加一
return ;
}
void pop_stack(SeqStack ps,char *ch)
{
LNode p=ps->top;
*ch=p->date;
ps->top=p->next;
free(p);
ps->date--;
}
char fun(int val)
{
char ch;
if(val>9)
{
ch=val-10+'A';
}
else
ch=val+'0';
return ch;
}
void change(SeqStack ps,int m,int n)
{
char ch;
printf("转换为:");
while(m)
{
push_stack(ps,fun(m%n));//此时我们压栈的字符。而fun函数就是将int转换为char行
m/=n;
}
while(empty_stack(ps))
{
pop_stack(ps,&ch);
printf(" %c",ch);
}
printf("\n");
return ;
}
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct List
{
char date;
struct List *next;
}NODE,*LNode;
typedef struct
{
LNode top;
int date;//计数器用来计数
}Stack,*SeqStack;
SeqStack init_satck();//初始化
int empty_stack(SeqStack);
void push_stack(SeqStack,char);
void pop_stack(SeqStack,char*);
void change(SeqStack,int,int);
char fun(int);//将int转换为char
int main(void)
{
int m,n;
SeqStack ps=init_satck();
printf("请输入十进制数:");
scanf("%d",&m);
printf("请输入转换的进制:");
scanf("%d",&n);
change(ps,m,n);
return 0;
}
SeqStack init_satck()
{
SeqStack ps;
if((ps=(SeqStack)malloc(sizeof(Stack)))==NULL)
{
printf("动态内存分配失败!\n");
exit(-1);
}
else
{
ps->top=NULL;
ps->date=0;
}
return ps;
}
int empty_stack(SeqStack ps)
{
if(ps->top==NULL)
return 0;
else
return 1;
}
void push_stack(SeqStack ps,char ch)
{
LNode p=(LNode)malloc(sizeof(NODE));
p->date=ch;
p->next=ps->top;
ps->top=p;//就是变相的一个头插法
ps->date++;//个数加一
return ;
}
void pop_stack(SeqStack ps,char *ch)
{
LNode p=ps->top;
*ch=p->date;
ps->top=p->next;
free(p);
ps->date--;
}
char fun(int val)
{
char ch;
if(val>9)
{
ch=val-10+'A';
}
else
ch=val+'0';
return ch;
}
void change(SeqStack ps,int m,int n)
{
char ch;
printf("转换为:");
while(m)
{
push_stack(ps,fun(m%n));//此时我们压栈的字符。而fun函数就是将int转换为char行
m/=n;
}
while(empty_stack(ps))
{
pop_stack(ps,&ch);
printf(" %c",ch);
}
printf("\n");
return ;
}
相关文章推荐
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- 十进制转换为任何进制
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- 将十进制的数转换为任何进制的数
- 完全正确的十进制转换其他任何进制,朋友帮我改的
- 十进制转换成任意进制(栈的应用)
- python编程实现十进制的转换(十进制到任何进制不用系统函数实现)
- 不同进制数的转换及应用
- 一条SQL语句实现其它进制到十进制转换
- 【C#食谱】【风味小吃】菜单7:把其他进制的数转换为十进制
- 栈的应用:进制转换和简易计算器的实现
- 巧用一条SQL 实现其它进制到十进制转换
- 巧用一条SQL语句实现其它进制到十进制转换
- 任何进制的任何数(没有大小限制)向任何进制的数的转换方法(进制原则可以任意,但是大于十表示不方便)
- 十进制到n进制的转换
- 十进制转换成二进制,十进制小数转换成二进制小数,二进制转换成十进制
- ORACLE中用一条SQL实现其它进制到十进制的转换
- 十进制/十八进制的互转换(此方法应用于所有进制与10进制的转换)
- 巧用一条SQL语句实现其它进制到十进制转换
- 巧用一条SQL 实现其它进制到十进制转换