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

#include <stdio.h>

#include <stdlib.h>

#define maxsize 100

typedef struct stack

{

int datamaxsize;//静态栈

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;

}

相关推荐
2401_839080543 小时前
C++常见八股
数据结构·c++·算法
暮雨封夕3 小时前
跳表(Skip List)详解:原理、实现、使用场景与实际应用
数据结构
miller-tsunami4 小时前
排序的相关知识点
数据结构·排序算法
Escalating_xu4 小时前
【C 语言项目】数组和函数综合实践:从零实现控制台扫雷游戏
c语言
Navigator_Z7 小时前
LeetCode //C - 1254. Number of Closed Islands
c语言·算法·leetcode
Logic1018 小时前
C语言/数据结构滑动窗口题解:替换k个字符后的最长连续相同字符子串(LeetCode 424)
c语言·数据结构·字符串·滑动窗口·时间复杂度·频率统计·算法题
free-elcmacom9 小时前
发际线警告!手撕《C陷阱与缺陷》终极 BOSS:signal 函数与 typedef 魔法
c语言·开发语言·visual studio code·visual studio
程序员阿鹏9 小时前
简单介绍一下软引用
java·开发语言·jvm·数据结构·后端
haluhalu.9 小时前
初识 Protobuf:微服务跨语言通信的一份契约
java·c语言·开发语言·c++·python
临期冰淇淋10 小时前
Unisoc 展锐平台Camera摄像头分辨率适配
linux·c语言·驱动开发