永发信息网

C语言中的栈实现进制转换

答案:2  悬赏:10  手机版
解决时间 2021-04-02 07:42
C语言中的栈实现进制转换
最佳答案
#include
#include
#include

#define MAXSIZE 100

typedef int DataType;
typedef struct{
DataType data[MAXSIZE];
int top;
}SeqStack,*PSeqStack;

PSeqStack Init_SeqStack(void)
{
PSeqStack S;
S=(PSeqStack)malloc(sizeof(SeqStack));
if(S)
S->top=-1;
return S;
}

int Push_SeqStack(PSeqStack S,DataType x)
{
if (S->top==MAXSIZE-1)
return 0;
else
{
S->top++;
S->data[S->top]=x;
return 1;
}
}

int Empty_SeqStack(PSeqStack S)
{
if(S->top==-1)
return 1;
else
return 0;
}

int Pop_SeqStack(PSeqStack S,DataType *x)
{
if(Empty_SeqStack(S))
return 0;
else
{
*x=S->data[S->top];
S->top--;
return -1;
}
}

void Destory_SeqStack(PSeqStack *S)
{
if(*S)
free(*S);
*S=NULL;
return;
}

typedef int DataType;
int conversation(int n,int r)
{
PSeqStack S;
DataType x;
if(!r)
{
printf("基数不能为0");
return(0);
}
S=Init_SeqStack();
if(!S)
{
printf("栈初始化失败");
return(0);
}
while(n)
{
Push_SeqStack(S,n%r);
n=n/r;
}
while (!Empty_SeqStack(S))
{
Pop_SeqStack(S,&x);
printf("%d",x);
}
Destory_SeqStack(&S);
return 0;
}

void main()
{
int i,a;
printf("输入要转换的进制!!\n");
scanf("%d",&a);
printf("输入要转换的数!!\n");
scanf("%d",&i);
conversation(i,a);
}
全部回答
#include
#include
#include
#define MAXSIZE 100
#define DataType int //-------------------------
typedef struct {
DataType data[MAXSIZE];
int top;
}SeqStack,*PSeqStack;
PSeqStack Init_SeqStack(void)
{
PSeqStack S;
S=(PSeqStack)malloc(sizeof(SeqStack));
if(S)
S->top=-1;
return S;
}
int Push_SeqStack (PSeqStack S,DataType x) //----------------------------,
{
if (S->top==MAXSIZE-1)
return 0;
else
{
S->top++;
S->data[S->top]=x;
return 1;
}
}
int Empty_SeqStack(PSeqStack S); ////-----------------------------------------
int Pop_SeqStack(PSeqStack S,DataType *x)
{
if(Empty_SeqStack (S))
return 0;
else
{
*x=S->data[S->top];
S->top--;
return -1;
}
}
void Destory_SeqStack (PSeqStack *S)
{
if(*S)
free(*S);
*S=NULL;
return;
}
int Empty_SeqStack(PSeqStack S)
{
if(S->top==-1)
return 1;
else
return 0;
}
int conversation (int n,int r)
{
PSeqStack S;
DataType x;
if(!r)
{
printf("基数不能为0");
return(0);
}
S=Init_SeqStack();
if(!S)
{
printf("栈初始化失败");
return(0);
}
while(n)
{
Push_SeqStack(S,n%r);
n=n/r;
}
while (!Empty_SeqStack(S))
{
Pop_SeqStack(S,&x);
printf("%d",x);
}
Destory_SeqStack (&S);
}
void main()
{
int i,a;
printf("输入要转换的进制!!\n");
scanf("%d",&a);
printf("输入要转换的数!!\n");
scanf("%d",&i);
conversation(i,a);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
18个100是180。对还是错
为了躲避急速转向行驶的车辆而扣分罚款对吗?
北京火车站内D22转K101 50分钟够吗
请问该如何利用读秀获取电子版,写出详细获取
农商银行插入
谁能告诉我现在亚麻籽多少钱一斤
有没有,杨幂13分钟视频,在线等
求9千克比500克化简比,在求比值过程
说一些火猫打一般卡尔的思路.给喜欢这2个英雄
如何查看自己的win10版本
musang king猫山王 榴莲千层一整个多少钱
北京牌照货车白天进二环可以吗
祖传的坛子很多年了!谁给鉴定下有没有收藏价
找10首女生校园歌曲
dnf妖刀村正副火卡行吗?
推荐资讯
用PS要做成16m*8m 的户外广告牌,画布大小要
为什么@别人微信昵称会有星星
没房子没钱没家该怎么办?该去哪儿
最挣钱的体育运动
so as 到底应该怎么用啊
钟洁《樱花》歌词、求帮忙
用我的书房或我的玩具为话题,按不必说……也
z7m怎么优化 今天刚入手
为什么普通高中7月16日才放暑假
陈思成夜里插过佟丽娅吗
不患贫而患不安什么意思
从北宋到清末 金华义乌到底发生过哪些战争
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?