顺序栈实现十进制和八进制之间的转换

顺序栈实现十进制和八进制之间的转换

(1)首先实现栈的初始化,既申请固定大小的数组空间,存储数据,用到的方法是 int InitStack(  struct  sqstack  *s );

(2)接下来就是让数据入栈 ,用到的方法是int push(  struct  sqstack *s,int e )

(3)与数据入栈相对应的是数据出栈,用到的方法是 int pop(  struct  sqstack *s,int *e  )

(4)接下来的方法就是得到栈顶数据元素了,用到的方法是int get_top(  struct  sqstack *s)

(5)最后就是进行数制转换的核心算法了,用到的算法原理是

n = (n /d)*d+n % d;

实现的算法是void conversion(struct  sqstack *s )

完整的实现代码如下所示:

#include

#include

#include

#define MAX_SIZE 100

struct sqstack

{

int *base;

int *top;

int stack_size;

};

int InitStack( struct sqstack *s )

{

s->base = ( int *)malloc( MAX_SIZE );

if( s->base == NULL )

{ return -1;}

s->top = s->base ;

s->stack_size = MAX_SIZE;

return 1;

}

int push( struct sqstack *s,int e )

{

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

return -1;

*s->top++ =e;

return 1;

}

//出栈

int pop( struct sqstack *s,int *e )

{

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

return 0;

e = --s->top;

return 1;

}

//栈不为空,返回栈顶元素

int get_top( struct sqstack *s)

{

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

exit(1);

return *(s->top -1);

}

int stackempty( struct sqstack *s )

{

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

{

return 0;

}

return 1;

}

void conversion(struct sqstack *s )

{

InitStack(s);

int n,*e;

scanf("%d",&n);

printf("%d=",n);

while( n)

{

push( s,n%8 ) ;

n =n/8;

}

printf("o");

while( stackempty( s ) )

{

printf("%d",get_top(s));

pop(s,e);

}

}

int main()

{

struct sqstack s,*m;

m = &s;

int i = InitStack( m );

conversion( m );

return 0;

}

顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换相关推荐

  1. C语言unsigned char、char与int之间的转换

    C语言unsigned char.char与int之间的转换 2016年10月23日 18:40:50 bladeandmaster88 阅读数:11347更多 个人分类: c语言基础 先来看一道题: ...

  2. 栈的删除函数c语言,顺序栈的插入和删除

    <顺序栈的插入和删除>由会员分享,可在线阅读,更多相关<顺序栈的插入和删除(5页珍藏版)>请在人人文库网上搜索. 1.实验四顺序栈的插入和删除姓名:学号: 日期:一.实验目的: ...

  3. c语言中将十六进制数转换为十进制数程序,C语言中十六进制转十进制两种实现方法...

    C语言中十六进制转十进制两种实现方法 C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英 ...

  4. c语言怎么十进制转八进制,C语言:输入一个十进制转化成八进制输出

    2018-06-06 根据输入的年月日,输出该日为该年度的第几周.第几天. //根据输入的年月日,输出该日为该年度的第几周.第几天.星期几. //如输入: 2007,12,1 //则输出: 48z,3 ...

  5. 链栈判断回文 java_C语言链栈判断回文

    _ 12级 2011-11-06 回答 #include #include #include int IsPalindrome(const char *cScr); void main(void) { ...

  6. c 语言 二进制转换为十进制,用c/c++语言将二进制转换为十进制,最好有例子。...

    满意答案 klioc 2013.12.17 采纳率:58%    等级:12 已帮助:11832人 #include #include void f1(int m, int n) { //转整数部分 ...

  7. c语言中staloc是什么意思,C语言函数调用栈(三)

    6 调用栈实例分析 本节通过代码实例分析函数调用过程中栈帧的布局.形成和消亡. 6.1 栈帧的布局 示例代码如下: //StackReg.c #include //获取函数运行时寄存器%ebp和%es ...

  8. c语言二进制转换算法栈,用C语言顺序栈实现十进制和二进制的转换

    用C语言顺序栈实现十进制和二进制的转换 #include #include #include #define M 100 typedef int datatype; typedef struct{ d ...

  9. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...

    C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...

最新文章

  1. RabbitMQ 的概念
  2. sap 分摊分配不产生会计凭证的原因_SAP软件的物料分类账功能
  3. 在 Win vs2017 下编译 zint
  4. java操作oracle数据_Java连接Oracle数据库操作
  5. OpenCL将数组从内存copy到显存
  6. 计算机职业素养结尾,IT职业素养读后感
  7. FileUpload1上传控件
  8. AMIRA时间预测实现过程详解(含代码可直接套用)
  9. 录屏手机html5插件,越狱插件:首款能在iOS10上轻松录屏的工具!
  10. python中的slice用法
  11. DOS基本命令和批处理
  12. 头条/抖音小程序内容安全检测(违规词过滤)
  13. 使用jquery,按回车键实现tab键的功能
  14. 爬虫实战 | 手把手用Python教你采集可视化知乎问题的回答(内附代码)
  15. PHP连接redis并执行redis相关命令的方法详解
  16. ARM裸机的知识点总结---------11、iNandFlash (sd卡芯片化)
  17. 网络:TCP的三次握手
  18. 883. 三维形体投影面积(javascript)883. Projection Area of 3D Shapes
  19. 网络安全标准实践指南—远程办公安全防护
  20. English语法_不定代词 - 概述

热门文章

  1. centos/Ubuntu安装python3.7.0安装mysql5.7/5.6
  2. 计算机开启蓝牙网络,电脑蓝牙怎么开?
  3. 用ffmpeg将aac转成mp3 的.bat文件
  4. 手机本地视频怎么投屏到电脑
  5. 10进制转16进制C语言
  6. JavaScript实现图片剪切效果
  7. python加快绘图速度_python 三维画图为Python加速 - python+memcached
  8. 图说c语言,图说C语言重定向.doc
  9. 华侨大学计算机学院院徽,院徽释义
  10. linux dev shm,使用Linux的/dev/shm