链栈的运用:进制转化 ——以c语言为例

该博客展示了如何使用链栈结构实现不同进制之间的转换。通过定义链栈结构,实现了插入元素、删除栈顶元素的功能,并利用这些功能将十进制数转化为二进制、四进制和八进制。在主函数中,调用这些方法并打印转换结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <iostream>
using namespace std;
#define sElemType int
typedef struct linkNode{
	sElemType data;//数据域 
	linkNode *next;//指针域 
}*linkStack;
 //判空函数(链栈为空返回1;不为空返回0) 
 int isEmpty(linkStack top){
 	return top==NULL;
 }
 //初始化链栈 
 void initLinkStack(linkStack &top){
 	top=NULL;
 }
 //插入元素到链栈 
 void push(linkStack &top,sElemType val){
 	linkStack newNode=new linkNode[1];
 	newNode->data=val;
	 newNode->next=top; 
	 top=newNode;
 }
 //删除链栈的栈顶元素 
 void pop(linkStack &top,sElemType &val){
 	if(isEmpty(top)){
 		return;
	 }
 	val=top->data;
 	linkStack  tempPtr=top;
 	top=top->next;
 	delete tempPtr;
 }
 //进制转化 
void radixConvert(int num,int radix){
	linkStack top;
	initLinkStack(top);
	while(num){
		push(top,num%radix);
		num=num/radix;
	}
	while(!isEmpty(top)){
		sElemType val;
		pop(top,val);
		cout<<val;
	}
	
} 
int main(){
	cout<<"29的二进制数为:";
	radixConvert(29,2); 
	cout<<endl; 
	cout<<"29的四进制数为:";
	radixConvert(29,4); 
	cout<<endl;  
	cout<<"29的八进制数为:";
	radixConvert(29,8); 
	cout<<endl;  
	return 0;
}在这里插入代码片

运行结果截图如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值