顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换
顺序栈实现十进制和八进制之间的转换
顺序栈实现十进制和八进制之间的转换
(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语言,顺序栈实现十进制跟八进制之间的转换相关推荐
- C语言unsigned char、char与int之间的转换
C语言unsigned char.char与int之间的转换 2016年10月23日 18:40:50 bladeandmaster88 阅读数:11347更多 个人分类: c语言基础 先来看一道题: ...
- 栈的删除函数c语言,顺序栈的插入和删除
<顺序栈的插入和删除>由会员分享,可在线阅读,更多相关<顺序栈的插入和删除(5页珍藏版)>请在人人文库网上搜索. 1.实验四顺序栈的插入和删除姓名:学号: 日期:一.实验目的: ...
- c语言中将十六进制数转换为十进制数程序,C语言中十六进制转十进制两种实现方法...
C语言中十六进制转十进制两种实现方法 C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英 ...
- c语言怎么十进制转八进制,C语言:输入一个十进制转化成八进制输出
2018-06-06 根据输入的年月日,输出该日为该年度的第几周.第几天. //根据输入的年月日,输出该日为该年度的第几周.第几天.星期几. //如输入: 2007,12,1 //则输出: 48z,3 ...
- 链栈判断回文 java_C语言链栈判断回文
_ 12级 2011-11-06 回答 #include #include #include int IsPalindrome(const char *cScr); void main(void) { ...
- c 语言 二进制转换为十进制,用c/c++语言将二进制转换为十进制,最好有例子。...
满意答案 klioc 2013.12.17 采纳率:58% 等级:12 已帮助:11832人 #include #include void f1(int m, int n) { //转整数部分 ...
- c语言中staloc是什么意思,C语言函数调用栈(三)
6 调用栈实例分析 本节通过代码实例分析函数调用过程中栈帧的布局.形成和消亡. 6.1 栈帧的布局 示例代码如下: //StackReg.c #include //获取函数运行时寄存器%ebp和%es ...
- c语言二进制转换算法栈,用C语言顺序栈实现十进制和二进制的转换
用C语言顺序栈实现十进制和二进制的转换 #include #include #include #define M 100 typedef int datatype; typedef struct{ d ...
- 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...
C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...
最新文章
- RabbitMQ 的概念
- sap 分摊分配不产生会计凭证的原因_SAP软件的物料分类账功能
- 在 Win vs2017 下编译 zint
- java操作oracle数据_Java连接Oracle数据库操作
- OpenCL将数组从内存copy到显存
- 计算机职业素养结尾,IT职业素养读后感
- FileUpload1上传控件
- AMIRA时间预测实现过程详解(含代码可直接套用)
- 录屏手机html5插件,越狱插件:首款能在iOS10上轻松录屏的工具!
- python中的slice用法
- DOS基本命令和批处理
- 头条/抖音小程序内容安全检测(违规词过滤)
- 使用jquery,按回车键实现tab键的功能
- 爬虫实战 | 手把手用Python教你采集可视化知乎问题的回答(内附代码)
- PHP连接redis并执行redis相关命令的方法详解
- ARM裸机的知识点总结---------11、iNandFlash (sd卡芯片化)
- 网络:TCP的三次握手
- 883. 三维形体投影面积(javascript)883. Projection Area of 3D Shapes
- 网络安全标准实践指南—远程办公安全防护
- English语法_不定代词 - 概述
热门文章
- centos/Ubuntu安装python3.7.0安装mysql5.7/5.6
- 计算机开启蓝牙网络,电脑蓝牙怎么开?
- 用ffmpeg将aac转成mp3 的.bat文件
- 手机本地视频怎么投屏到电脑
- 10进制转16进制C语言
- JavaScript实现图片剪切效果
- python加快绘图速度_python 三维画图为Python加速 - python+memcached
- 图说c语言,图说C语言重定向.doc
- 华侨大学计算机学院院徽,院徽释义
- linux dev shm,使用Linux的/dev/shm