利用栈的基本操作实现将任意一个十进制整数转化为R进制整数_第1页
利用栈的基本操作实现将任意一个十进制整数转化为R进制整数_第2页
利用栈的基本操作实现将任意一个十进制整数转化为R进制整数_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用栈的基本操作实现将任意一个十进制整数转化为r进制整数利用栈的基本操作实现将任意一个十进制整数转化为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 stackincreme

2、nt 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>

3、=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;

4、 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("将十进制数

5、%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"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论