进制转换converse
栈和队列是在软件设计中常用的两种数据结构,它们的逻辑结构和线性表相同。
其特点在于运算受到了限制:栈按“后进先出”的规则进行操作,队按“先进先出”的规则进行操作,故称运算受限制的线性表。
从数据类型的角度看: 它们和线性表不同
插入 删除
线性表 Insert(L, i, x) Delete(L, i)
(1<=i<=n+1) (1<=i<=n)
栈 Insert(S, n+1, x) Delete(S, n)
队列 Insert(Q, n+1, x) Delete(Q, 1)
栈【定义】是限定仅在表尾进行插入或删除操作的线性表
允许插入、删除的这一端称为栈顶top
另一个固定端称为栈底bottom。
#define STACK_INIT_SIZE 100
#define STACKINCREAMENT 10typedef int SElemType;
typedef int Status;typedef struct
{SElemType *base;SElemType *top;int stacksize;
}SqStack;
说明
top指向栈顶元素的下一个位置,即待接收数据的位置
top= base 空栈
top=base+stacksize 栈满 补添存储
//顺序栈的初始化
Status InitStack(SqStack &s)
{s.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));if(!s.base)exit(OVERFLOW);s.top = s.base;s.stacksize = STACK_INIT_SIZE;return OK;
}
//取栈顶元素
Status GetTop(SqStack s,SElemType &e ) {if (s.top==s.base) return ERROR;e=*(s.top-1);return OK;
} // GetTop
出栈和取栈顶元,先判栈是否为空
为空时不能操作,否则产生错误。
通常栈空作为一种控制转移的条件
//顺序栈入栈
Status Push(SqStack &s,SElemType e)
{if(s.top - s.base >= s.stacksize){s.base = (SElemType *)realloc(s.base,(s.stacksize + STACKINCREAMENT)*sizeof(SElemType));if(!s.base) exit(OVERFLOW);s.top = s.base + s.stacksize;s.stacksize += STACKINCREAMENT;}*s.top++=e;return OK;
}
对于顺序栈,入栈时先判栈是否满了,栈满时不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。
//顺序栈出栈
Status Pop(SqStack &s,SElemType &e)
{if(s.top == s.base) return ERROR;e = *--s.top;return OK;
}
//顺序栈判空
Status StackEmpty(SqStack s)
{if(s.top == s.base) return TRUE;else{return FALSE;}
}
算法思想 当N>0时重复1)、2)
1)若 N≠0,则将N%d 压入栈s中,执行2);
若N=0,将栈s的内容依次出栈,算法结束。
2)用N/d 代替 N
//进制转换
void Converse(int N,int d)
{char z = 'A';SqStack s;int e;InitStack(s);if(N==0)cout<<N;else{while(N){Push(s,N%d);N = N/d;}while(!StackEmpty(s)){Pop(s,e);if((e>=10)&&e<=15)printf("%c",z+e-10);elseprintf("%d",e);}}}
//主函数
int main()
{SqStack s;InitStack(s);int N,d;printf("请输入一个非负十进制数及想要转换为多少进制?\n");scanf("%d",&N);scanf("%d",&d);Converse(N,d);return 0;
}
进制转换converse相关推荐
- python中不同进制的整数之间可以直接运算_Python 进制转换、位运算
一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...
- c语言进制转换pdf下载,C语言实现任意进制转换.doc
C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...
- 进制转换 位运算(包括补码、原码、反码、~0等一些零碎东西一次说清)
我发现网上关于标题上的内容介绍的都很零碎,因此为了方便查找.也为了本人对这一部分的充分理解,就想着写一篇这样的博客(我分成了几个部分,以便查找): 一.进制转换 让我们先来看看各个进制的定义: 十进制 ...
- 每日一题(进制转换)
前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...
- 进制转换数据结构c语言不用栈,急求!!!用数据结构(C语言)利用栈实现十进制向二(八)进制转换,要有注释,谢谢!...
匿名用户 1级 2013-12-05 回答 #include #include #include typedef unsigned int data_type; //结点数62616964757a68 ...
- 计算机中的数制和编码教案,计算机《数制与编码进制转换》公开课教案.doc
<计算机应用基础>教案 新田县职业中学 蒋玲 PAGE PAGE 7 数制与编码--进制转换 [学情分析]本课内容是在学生已经学习了计算机发展与应用.计算机系统的组成等知识的基础上进行,已 ...
- 进制转换(完成Python14作业的背景补充)
来源于小甲鱼进制转换视频 数的认识 数,是一个无形的.抽象的概念,它是人类用来表示数量的一个智力的产物 "一百"是一个抽象概念,用到计数书本有几页就会变成具体的.有形的概念 我们要 ...
- python 进制转换_Python数据结构与算法——递归应用之进制转换
高考加油 在前面的文章中堆栈也用于进制转换(存放余数).而递归也可以用于进制转换,有固定模式循环,并且可以规模越来越小的问题都可以转换成递归 栈与递归之间一定有点联系 整数转换成任意进制 日常运算都是 ...
- 16进制转string java_java的2/10/16进制转换和字符串数字转换
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...
最新文章
- 【笔记】HMM在股票指数中的简单应用
- hdu 3564(线段树+LIS)
- 如何找到设备的guid_如何禁止win10自动更新显卡驱动
- JavaWeb程序设计任务教程(黑马程序员 传智播客)测一测 编写一个Servlet,实现统计网站被访问次数的功能
- react做h5 例子_使用React写一个网站的心得体会
- 解决Github图片加载失败
- 浅谈HTTPS以及Fiddler抓取HTTPS协议
- 萤石云好友分享的监控怎么看_助力开学季丨萤石云APP新增群组分享功能、扩容优惠套餐!...
- Java学习之JDBC(1)
- 8代cpu能装linux 系统吗,Intel支持八九代酷睿的B365芯片组将登场亮相
- linux安装lrzsz工具
- 开发者必看:Google Play应用上架流程(希望你不踩坑!)
- python安装失败0x80070005_win10系统运行提示0x80070005错误的解决办法
- 不伤虫蚁,使虫蚁远离的方法
- 针对于“上传文件”和“触发方式” 的解决方案(Antd个例)
- 脚下,梦開始的地方——七月总结
- 外部地址是什么意思_NAT网络地址转换
- Unity3D的Rigidbody类中useGravity、isKinematic和velocity的使用注解
- Falcom:英雄传说系列
- 合并多个集合同类项	 	 5.{aaa,bbb,ccc},{bbb,ddd},{eee,fff},{ggg},{ddd,hhh} 	 通过编程实现结果为