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;

}

相关推荐
himobrinehacken6 小时前
位运算揭秘:左右移与符号位陷阱
c语言·c++·算法·安全
Code_Solitude8 小时前
传智杯备赛代码整理(前4题)
数据结构·算法
水饺编程9 小时前
第2章:Linux 基础,rm 命令
linux·c语言·汇编
Jasmine_llq9 小时前
《P8816 [CSP-J 2022] 上升点列》
数据结构·算法·贪心·排序·二维动态规划 dp·类背包状态转移
夏虫不可与之言冰9 小时前
第三课 点亮 LED 与定时器非阻塞闪烁
c语言·c++·vscode·单片机·嵌入式硬件·物联网
辛苦才能9 小时前
C++ 哈希表深度解析:删除为什么必须打标记,负载因子为什么卡 0.7
开发语言·数据结构·c++·算法
JasmineX-19 小时前
数据结构(笔记)——顺序栈
c语言·数据结构·笔记
2401_862880829 小时前
嵌入式Linux系统移植与驱动开发完整指南
linux·c语言·驱动开发
dfjdkfahkjd10 小时前
开源项目吐槽大会:技术文章大纲
r语言
凉茶钱11 小时前
list:哨兵节点,const_iterator 和 const iterator的区别与迭代器失效
数据结构·c++·list