C语言数据结构用栈实现将十进制del转换为r进制

#include <stdio.h>

#include <stdlib.h>

#define maxsize 100

typedef struct stack

{

int data[maxsize];//静态栈

int top;

}Stack;

void initStack(Stack* s)

{

s->top=-1;//如果初始化为-1,push函数中就先++,再赋值,如果初始化为0,就就先赋值,再++

}

int isempty(Stack* s)//判断是否空栈

{

return s->top==-1;

}

int isfull(Stack* s)//判断是否栈满

{

return s->top==maxsize-1;

}

void push(Stack* s,int e)

{

if(isfull(s))

{

printf("Stack overflow!\n");

exit(-1);

}

s->data[++(s->top)]=e;

}

int pop(Stack* s)

{

if(isempty(s))

{

printf("no elemtype!\n");

exit(-1);

}

return s->data[(s->top)--];

}

void convertdecimaltobase(int del,int r)

{

Stack s;

initStack(&s);

while(del>0)

{

push(&s,del%r);//把余的结果存入栈中,例如十进制1348,八进制为2504

del=del/r;//第一次余得4,先入栈,就后出栈

}

printf("转换的等效%d进制数:>",r);

while(!isempty(&s))

{

printf("%d",pop(&s));//依次出栈

}

printf("\n");

}

int main()

{

int decimalnumber,base;///分别是十进制数和要转=转换的位(例如八进制位)

printf("请输入十进制数:>\n");

scanf("%d",&decimalnumber);

printf("enter the base to convert:>\n");

scanf("%d",&base);

convertdecimaltobase(decimalnumber,base);

return 0;

}

相关推荐
chengpei14719 小时前
I²C协议简介
c语言·开发语言
CoderYanger20 小时前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
不会c嘎嘎21 小时前
【数据结构】AVL树详解:从原理到C++实现
数据结构·c++
say_fall21 小时前
C语言编程实战:每日一题:随机链表的复制
c语言·开发语言·链表
却话巴山夜雨时i21 小时前
394. 字符串解码【中等】
java·数据结构·算法·leetcode
惊鸿.Jh1 天前
503. 下一个更大元素 II
数据结构·算法·leetcode
唐·柯里昂7981 天前
野火鲁班猫5使用正点原子 RTL8188EUS Wifi模块驱动移植(Linux5.10 Debian系统) 解决zsh报错
linux·c语言·mcu·物联网·ubuntu·硬件工程·软件构建
客梦1 天前
数据结构-栈与队列
数据结构·笔记
TL滕1 天前
从0开始学算法——第四天(题目参考答案)
数据结构·笔记·python·学习·算法
Liangwei Lin1 天前
洛谷 P1443 马的遍历
数据结构·算法