教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数

来源:网络收集 时间:2026-08-29
导读: 利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。 算法为: 1、定义栈的顺序存取结构 2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等) 3、定义一个函数用来实现上面问题: (1)十进制整数X和R作为形参 (2)初始化栈 (3)只要X不为0重

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。 算法为:

1、定义栈的顺序存取结构

2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)

3、定义一个函数用来实现上面问题:

(1)十进制整数X和R作为形参

(2)初始化栈

(3)只要X不为0重复做下列动作

将X % R入栈, X=X/R

(4)只要栈不为空重复做下列动作

栈顶出栈 , 输出栈顶元素

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#define stack_init_size 100

#define stackincrement 10

typedef struct sqstack

{

int *base;

int *top;

int stacksize;

} sqstack;

int StackInit(sqstack *s)

{

s->base=(int *)malloc(stack_init_size *sizeof(int));

if(!s->base)

return 0;

s->top=s->base;

s->stacksize=stack_init_size;

return 1;

}

int Push(sqstack *s,int e)

{

if(s->top-s->base>=s->stacksize)

{

s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int)); if(!s->base)

return 0;

s->top=s->base+s->stacksize;

s->stacksize+=stackincrement;

}

*(s->top++)=e;

return e;

}

int Pop(sqstack *s,int e)

{

if(s->top==s->base)

return 0;

e=*--s->top;

return e;

}

int stackempty(sqstack *s)

{

if(s->top==s->base)

{

return 1;

}

else

{

return 0;

}

}

int conversion(sqstack *s)

{

int n,e=0,flag=0;

printf("输入要转化的十进制数:\n");

scanf("%d",&n);

printf("要转化为多少进制:2 进制、8 进制、16 进制 填数字!\n"); scanf("%d",&flag);

printf("将十进制数%d 转化为%d 进制是:\n",n,flag);

while(n)

{

Push(s,n%flag);

n=n/flag;

}

while(!stackempty(s))

{

e=Pop(s,e);

switch(e)

{

case 10: printf("A");

break;

case 11: printf("B");

break;

case 12: printf("C"); break;

case 13: printf("D"); break;

case 14: printf("E"); break;

case 15: printf("F"); break;

default: printf("%d",e); }

}

printf("\n");

return 0;

}

int main()

{

sqstack s;

StackInit(&s);

conversion(&s);

return 0;

}

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/52664.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)