概述
#include<stdlib.h>
#include<stdio.h>
#include<stddef.h>
#define MAXSIZE 50
typedef char ElemType;
/*定义栈结构*/
typedef struct
{ ElemType data[MAXSIZE];
int top;
}SeqStack,*PSeqStack;
/*初始化栈,构造一个空栈,如果成功,则返回栈的地址*/
PSeqStack Init_SeqStack()
{ PSeqStack s;
s=(PSeqStack)malloc(sizeof(SeqStack));
if(s)
s->top=-1;
return s;
}
/* 判断栈是否为空,如果为空,则返回1,否则返回0*/
int Empty_SeqStack(PSeqStack s)
{if(s->top==-1)
return 1;
else
return 0;
}
/*入栈操作,栈不满时,入栈一个元素,成功返回1,失败返回0*/
int Push_SeqStack(PSeqStack s,ElemType x)
{
if(s->top==MAXSIZE-1 )
return 0;
else
{s->top=s->top+1;
s->data[s->top]=x;
return 1;
}
}
/*出栈操作,栈不空时,出栈一个元素,用参数*x保存,成功返回1,失败返回0*/
int Pop_SeqStack(PSeqStack s,ElemType *x)
{
if(Empty_SeqStack(s))
return 0;
else
{ *x=s->data[s->top];
s->top=s->top-1;
return 1;
}
}
/*取栈顶元素操作,栈不空时,获取栈顶元素,成功返回1,失败返回0*/
int GetTop_SeqStack(PSeqStack s,ElemType *x)
{
if(Empty_SeqStack(s))
return 0;
else
*x=s->data[s->top];
return 1;
}
/*销毁栈*/
void Destroy_SeqStack(PSeqStack *s)
{
if(*s)
free(*s);
*s=NULL;
return;
}
/*十进制转换成r进制(2,8,16)*/
void Conversion(int num,int r)
{ PSeqStack s;
ElemType x;
if(!r)
{
printf("基数不能为0");
return;
}
s=Init_SeqStack();
if(!s)
{
printf("初始化栈空间失败");
return;
}
while(num)
{if(num%r>9)
Push_SeqStack(s,num%r+'A'-10); /*余数大于9,则进栈ABCDEF*/
else
Push_SeqStack(s,num%r+'0'); /*余数小于10,则进栈数字字符*/
num=num/r;
}
while(!Empty_SeqStack(s))
{Pop_SeqStack(s,&x);
printf("%c",x);
}
}
int main()
{ int r, num;
printf("请输入要转换的数据");
scanf("%d",&num);
printf("请输入要转换成几进制:");
scanf("%d",&r);
Conversion(num,r);
//getch(); //非程序一部分,Dev-C++环境要求
}
资源源自:顺序栈实现将十进制整数转换为r(2、8、16)进制数_zyj_hollowword的博客-CSDN博客_顺序栈实现十进制转换任意进制
最后
以上就是难过大地为你收集整理的数据结构 进制转换(十进制转换为d(2、8、16)进制)C语言的全部内容,希望文章能够帮你解决数据结构 进制转换(十进制转换为d(2、8、16)进制)C语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复