用C语言栈实现进制转换

数据结构与算法 专栏收录该内容
5 篇文章 0 订阅
#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--;
	}
}

  • 3
    点赞
  • 1
    评论
  • 20
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

pengchenxin

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值