栈和队列是在软件设计中常用的两种数据结构,它们的逻辑结构和线性表相同。

其特点在于运算受到了限制:栈按“后进先出”的规则进行操作,队按“先进先出”的规则进行操作,故称运算受限制的线性表。

数据类型的角度看: 它们和线性表不同

插入                       删除

线性表    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相关推荐

  1. python中不同进制的整数之间可以直接运算_Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  2. c语言进制转换pdf下载,C语言实现任意进制转换.doc

    C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...

  3. 进制转换 位运算(包括补码、原码、反码、~0等一些零碎东西一次说清)

    我发现网上关于标题上的内容介绍的都很零碎,因此为了方便查找.也为了本人对这一部分的充分理解,就想着写一篇这样的博客(我分成了几个部分,以便查找): 一.进制转换 让我们先来看看各个进制的定义: 十进制 ...

  4. 每日一题(进制转换)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

  5. 进制转换数据结构c语言不用栈,急求!!!用数据结构(C语言)利用栈实现十进制向二(八)进制转换,要有注释,谢谢!...

    匿名用户 1级 2013-12-05 回答 #include #include #include typedef unsigned int data_type; //结点数62616964757a68 ...

  6. 计算机中的数制和编码教案,计算机《数制与编码进制转换》公开课教案.doc

    <计算机应用基础>教案 新田县职业中学 蒋玲 PAGE PAGE 7 数制与编码--进制转换 [学情分析]本课内容是在学生已经学习了计算机发展与应用.计算机系统的组成等知识的基础上进行,已 ...

  7. 进制转换(完成Python14作业的背景补充)

    来源于小甲鱼进制转换视频 数的认识 数,是一个无形的.抽象的概念,它是人类用来表示数量的一个智力的产物 "一百"是一个抽象概念,用到计数书本有几页就会变成具体的.有形的概念 我们要 ...

  8. python 进制转换_Python数据结构与算法——递归应用之进制转换

    高考加油 在前面的文章中堆栈也用于进制转换(存放余数).而递归也可以用于进制转换,有固定模式循环,并且可以规模越来越小的问题都可以转换成递归 栈与递归之间一定有点联系 整数转换成任意进制 日常运算都是 ...

  9. 16进制转string java_java的2/10/16进制转换和字符串数字转换

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

最新文章

  1. 【笔记】HMM在股票指数中的简单应用
  2. hdu 3564(线段树+LIS)
  3. 如何找到设备的guid_如何禁止win10自动更新显卡驱动
  4. JavaWeb程序设计任务教程(黑马程序员 传智播客)测一测 编写一个Servlet,实现统计网站被访问次数的功能
  5. react做h5 例子_使用React写一个网站的心得体会
  6. 解决Github图片加载失败
  7. 浅谈HTTPS以及Fiddler抓取HTTPS协议
  8. 萤石云好友分享的监控怎么看_助力开学季丨萤石云APP新增群组分享功能、扩容优惠套餐!...
  9. Java学习之JDBC(1)
  10. 8代cpu能装linux 系统吗,Intel支持八九代酷睿的B365芯片组将登场亮相
  11. linux安装lrzsz工具
  12. 开发者必看:Google Play应用上架流程(希望你不踩坑!)
  13. python安装失败0x80070005_win10系统运行提示0x80070005错误的解决办法
  14. 不伤虫蚁,使虫蚁远离的方法
  15. 针对于“上传文件”和“触发方式” 的解决方案(Antd个例)
  16. 脚下,梦開始的地方——七月总结
  17. 外部地址是什么意思_NAT网络地址转换
  18. Unity3D的Rigidbody类中useGravity、isKinematic和velocity的使用注解
  19. Falcom:英雄传说系列
  20. 合并多个集合同类项 5.{aaa,bbb,ccc},{bbb,ddd},{eee,fff},{ggg},{ddd,hhh} 通过编程实现结果为

热门文章

  1. C语言网络编程:UDP通信实现
  2. Vue异步组件Demo
  3. Angular4.0从入门到实战打造在线竞拍网站学习笔记之四--数据绑定管道
  4. android -volley-请求数据
  5. 个人学习某个系统或平台的3问式的整理和细化指引
  6. “北京今年入冬的第一场雪”,纪念博客园写日志一年了
  7. php扩展xdebug安装以及用kcachegrind系统分析
  8. 好多Javascript日期选择器呀-4
  9. 在windows程序中嵌入Lua脚本引擎--编写自己的Lua库
  10. 网络数据包分析软件Wireshark简介