第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/5/18 14:03:02 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

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

2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等) 3、定义一个函数用来实现上面问题: (1)十进制整数X和R作为形参 (2)初始化栈

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

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

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

栈顶出栈 , 输出栈顶元素

#include #include #include

#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(\

printf(\要转化为多少进制:2 进制、8 进制、16 进制 填数字!\\n\ scanf(\

printf(\将十进制数%d 转化为%d 进制是:\\n\ while(n) {

Push(s,n%flag); n=n/flag; }

while(!stackempty(s)) {

e=Pop(s,e); switch(e) {

case 10: printf(\ break;

case 11: printf(\

break;

case 12: printf(\ break;

case 13: printf(\ break;

case 14: printf(\ break;

case 15: printf(\ break;

default: printf(\ } }

printf(\ return 0; }

int main() {

sqstack s; StackInit(&s); conversion(&s); return 0; }

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4stn66uyur2r4yi9c25l_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top