(数据结构)数制转换——将一个十进制整数转换成一个非十进制数

cpp 复制代码
#include<stdio.h>
#include<stdlib.h>
//类型创建
typedef struct	LinkedStackNode
{
	int data;
	struct LinkedStackNode* next;
}LinkedStackNode, * LinkedStack;
LinkedStack top;
//链栈的初始化
//头结点的初始化
LinkedStack Init_LinkedStack()
{
	LinkedStack top = (LinkedStackNode*)malloc(sizeof(LinkedStackNode));
	if (top != NULL)
	{
		top->next = NULL;
	}
	else
	{
		printf("头结点申请空间失败\n");
	}
	return top;
}
//判断栈空
int LinkedStack_Empty(LinkedStack top)
{
	if (top->next == NULL)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
//入栈
int Push_LinkedStack(LinkedStack top, int x)
{
	LinkedStackNode* node;
	node = (LinkedStackNode*)malloc(sizeof(LinkedStackNode));
	if (node == NULL)
	{
		printf("节点申请空间失败\n");
		return 0;
	}
	node->data = x;
	node->next = top->next;
	top->next = node;
	return 1;
}
//出栈
int Pop_LinkedStack(LinkedStack top, int* x)
{
	LinkedStackNode* node;
	if (top->next == NULL)
	{
		printf("链栈为空,无法进行出栈操作\n");
		return 0;
	}
	else
	{
		node = top->next;
		*x = node->data;
		top->next = node->next;  //将头结点后的节点整体向前一位
		free(node);
		return 1;
	}
}
//读取栈顶元素
int Get_LinkedStack(LinkedStack top, int* x)
{
	if (top->next == NULL)
	{
		printf("链栈为空\n");
		return 0;
	}
	else
	{
		*x = top->next->data;
		return 1;
	}
}
//对于输入的任意一个非负十进制整数,打印输出与其等值的任意进制数
void Conversion(int N)
{
	int x; //声明变量x,输出转换后各个位数上的数
	int jinzhi;
	printf("请输入需要转换为的进制数\n");
	scanf("%d",&jinzhi);
	LinkedStack S = Init_LinkedStack();   //构造空链栈S
	while (N > 0)   //当N>0时,继续进行数值转换
	{	
		Push_LinkedStack(S,N%jinzhi);  //对N对进制数的余数的入栈
		N /=jinzhi;  //将N的商赋值给本身,便于下一轮计算
	}
	printf("转化后的进制数为:");
	while (!LinkedStack_Empty(S))  //栈不为空时,出栈栈中的余数
	{
		Pop_LinkedStack(S,&x);   //进行出栈操作
		printf("%d ",x);
	}
}
int main()
{
	//栈的初始化
	//头结点的初始化
	LinkedStack top;
	top = Init_LinkedStack();
	if (top == NULL)
	{
		printf("申请链栈空间失败\n");
	}
	//对于输入的任意一个非负十进制整数,打印输出与其等值的任意进制数
	int N;
	printf("请输入需要转换的非负十进制数\n");
	scanf("%d",&N);
	Conversion(N);
	return 0;
}
相关推荐
爱吃生蚝的于勒几秒前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~4 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
洋24024 分钟前
C语言常用标准库函数
c语言·开发语言
王哈哈^_^29 分钟前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
星沁城31 分钟前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
脉牛杂德1 小时前
多项式加法——C语言
数据结构·c++·算法
legend_jz1 小时前
STL--哈希
c++·算法·哈希算法
徐嵌1 小时前
STM32项目---畜牧定位器
c语言·stm32·单片机·物联网·iot
kingmax542120081 小时前
初三数学,最优解问题
算法
一直学习永不止步1 小时前
LeetCode题练习与总结:赎金信--383
java·数据结构·算法·leetcode·字符串·哈希表·计数