用C语言栈实现进制转换

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#define MAXSIZE 100
typedef struct                       //定义栈的结构体
{
	int data[MAXSIZE];
	int top;
}Se,*Pe;
Pe begin();                    //栈的初始化
void ru(Pe S,int x);        //入栈函数
Pe zhuan(int m,int n);    //进制转换函数
void xiao(Pe *S);            //销毁栈
void chu(Pe S);               //出栈函数
int main()
{
	Pe S;
	int x,y;
	printf("输入要转换的十进制数和要转换的进制:\n");
	scanf("%d %d",&x,&y);
	S=zhuan(x,y);
	chu(S);
	xiao(&S);
}
Pe begin()
{
	Pe S;
	S=(Pe)malloc(sizeof(Se));
	if(S)
	S->top=-1;
	return S;
}
void ru(Pe S,int x)
{
	S->top++;
	S->data[S->top]=x;
}
Pe zhuan(int m,int n)
{
	Pe S;
	S=begin();
	int k;
	while(m!=0)
	{
		k=m%n;
		ru(S,k);
		m=m/n;
	}
	return S;
}
void xiao(Pe *S)
{
	if(*S)
	free(*S);
	*S=NULL;
} 
void chu(Pe S)
{
	while(S->top!=-1)
	{
		printf("%d",S->data[S->top]);
		S->top--;
	}
}

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值