补充完善下面的C语言代码,实现顺序栈的基本操作,然后借助所实现的顺序栈完成十进制数转八进制数的算法(请参考课本算法3.1),最后在主函数中测试该算法(测试用例:(1348)10=(2504))8.

/*①顺序栈的定义*/

typedef struct

{

ElemType  *base ;   // 栈底指针

ElemType  *top ;    // 栈顶指针

int  stacksize ;      // 栈的可用最大容量

}SqStack;

/*②栈的基本操作接口定义*/

//1.初始化栈:

//将栈S置为一个空栈(不含任何元素)

Status InitStack(SqStack &S);

//2.销毁栈

Status DestoryStack(SqStack &S);

//3.进栈:

//将元素X插入到栈S中,也称为 “入栈”、 “插入”、 “压入”。

Status Push(SqStack &S, ElemType  e );

//4.出栈:

//删除栈S中的栈顶元素,也称为”退栈”、 “删除”、 “弹出”。

Status Pop(SqStack &S, ElemType  &e);

//5.取栈顶元素:

//取栈S中栈顶元素。

float GetTop(SqStack S);

//6.判栈空:

//判断栈S是否为空,若为空,返回值为true,否则返回值为false。

Status StackEmpty(SqStack S);

//7.遍历栈元素

//从栈底元素向栈顶元素逐个遍历

Status StackTraverse(SqStack S);

#include<stdio.h>
#include<stdlib.h>
#define TRUE   1
#define FALSE  0
#define OK     1
#define ERROR  0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int Status ;
typedef int ElemType;
typedef struct{ElemType  *base ;   // 栈底指针ElemType  *top ;    // 栈顶指针int  stacksize ;      // 栈的可用最大容量
}SqStack;/*②栈的基本操作接口定义*/
//1.初始化栈:
//将栈S置为一个空栈(不含任何元素)
Status InitStack(SqStack &S);//2.销毁栈
Status DestoryStack(SqStack &S);//3.进栈:
//将元素X插入到栈S中,也称为 “入栈”、 “插入”、 “压入”。
Status Push(SqStack &S, ElemType  e );
//4.出栈:
//删除栈S中的栈顶元素,也称为”退栈”、 “删除”、 “弹出”。
Status Pop(SqStack &S, ElemType  &e);//5.取栈顶元素:
//取栈S中栈顶元素。
Status GetTop(SqStack S,ElemType &e);    //6.判栈空:
//判断栈S是否为空,若为空,返回值为true,否则返回值为false。
Status StackEmpty(SqStack S);//7.遍历栈元素
//从栈底元素向栈顶元素逐个遍历
Status StackTraverse(SqStack S);//非负数的十进制转八进制
void conversion();//1.初始化栈:
//将栈S置为一个空栈(不含任何元素)
Status InitStack(SqStack &S)
{S.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));if(!S.base)  exit (OVERFLOW); //存储分配失败S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;
}//InitStack//2.销毁栈
Status DestoryStack(SqStack &S)
{ElemType *p;p=S.base;free(p);S.base=NULL;return OK;
}//3.进栈:
//将元素X插入到栈S中,也称为 “入栈”、 “插入”、 “压入”。
Status Push(SqStack &S, ElemType e )
{if(S.top-S.base>=S.stacksize){//栈满,追加存储空间S.base=(ElemType *)realloc(S.base,(S.stacksize+STACK_INIT_SIZE)*sizeof(ElemType));if(!S.base) exit (OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return OK;
}//Push//4.出栈:
//删除栈S中的栈顶元素,也称为”退栈”、 “删除”、 “弹出”。
Status Pop(SqStack &S, ElemType &e)
{if(S.top==S.base) return ERROR;e=*--S.top;return OK;
}//pop//5.取栈顶元素:
//取栈S中栈顶元素。
Status GetTop(SqStack S,ElemType &e)
{if(S.top==S.base) return ERROR;e=*(S.top-1);return OK;
}//gettop//6.判栈空:
//判断栈S是否为空,若为空,返回值为true,否则返回值为false。
Status StackEmpty(SqStack S)
{if(S.top == S.base)return TRUE;elsereturn FALSE;
}//7.遍历栈元素
//从栈底元素向栈顶元素逐个遍历
Status StackTraverse(SqStack S)
{ElemType  *p;p = S.base;while(S.top> p)printf ("%s", *p++);return OK;
}//非负数的十进制转八进制
void conversion()
{int N;ElemType e;SqStack S;InitStack(S);printf("请输入要转换成八进制的数(非负数):");scanf("%d",&N);while(N){Push(S,N%8);N=N/8;}printf("八进制数为:");while(!StackEmpty(S)){Pop(S,e);printf("%d",e);}printf("\n");
}//conversionvoid main()
{conversion();system("pause");
}

顺序栈完成十进制数转八进制数的算法相关推荐

  1. python【蓝桥杯vip练习题库】ADV-97十进制数转八进制数

    试题 算法提高 十进制数转八进制数 资源限制 时间限制:1.0s 内存限制:512.0MB 编写函数,其功能为把一个十进制数转换为其对应的八进制数.程序读入一个十进制数,调用该函数实现数制转换后,输出 ...

  2. 顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换

    顺序栈实现十进制和八进制之间的转换 顺序栈实现十进制和八进制之间的转换 (1)首先实现栈的初始化,既申请固定大小的数组空间,存储数据,用到的方法是 int InitStack(  struct  sq ...

  3. Java实现算法提高十进制数转八进制数

    算法提高 十进制数转八进制数 时间限制:1.0s 内存限制:512.0MB 编写函数,其功能为把一个十进制数转换为其对应的八进制数.程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数. ...

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

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

  5. 顺序栈实现十进制转成R进制

    2016年7月31日13:53:37利用顺序栈实现十进制整数转换转换成r进制1.算法思想将十进制数N转换为r进制的数,其转换方法利用辗转相除法,以N=3456,r=8为例转换方法如下:N N / 8 ...

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

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

  7. 使用栈将十进制数转为八进制数

    0. 代码实现 #include<iostream> #include<stack> using namespace std;void conversion(int n) {c ...

  8. 【c语言】蓝桥杯算法训练 十进制数转八进制数

    问题描述 编写函数把一个十进制数输出其对应的八进制数. 样例输入 9274 样例输出 22072 #include<stdio.h> int main(int argc,char *arg ...

  9. 蓝桥杯 十进制数转八进制数

    编写函数,其功能为把一个十进制数转换为其对应的八进制数.程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数. 样例输入 9274 样例输出 22072 样例输入 18 样例输出 22 ...

最新文章

  1. linux文件权限详解
  2. xDeepFM架构理解及实现
  3. linux 下安装 php 扩展 典型安装 mysql curl mb_string
  4. body里写注释 postman_快速掌握Postman实现接口测试
  5. linux 交叉编译 静态库,从Linux为Windows开发交叉编译静态库
  6. 快讯|腔镜手术机器人研发商“北京术锐”完成数千万元 A 轮融资,顺为资本领投...
  7. 习题1083字符转换
  8. Spring Boot 2.0.0.M7 生产环境部署
  9. php限制登陆尝试次数,Laravel登录失败次数限制的实现方法
  10. 认识计算机硬件.ppt,认识计算机硬件完整ppt课件
  11. 夜神模拟器——最好用的安卓模拟器
  12. 我的macbook应用清单
  13. 含抽水蓄能电站系统的调峰经济调度研究matlab程序(粒子群算法)
  14. 鸿蒙适配倒计时,倒计时10天!鸿蒙系统传来好消息,华为大招正式亮相
  15. 搞清这几个答案在恋爱吧
  16. mysql的树状表结构设计。
  17. 精辟,16张图说透Modbus-RTU协议
  18. 学习笔记(01):SAS数据分析:从入门到企业实战-SAS PROC步骤I-2
  19. Fritzing软件绘制Arduino面包板接线图传感器模块库文件281
  20. 回归分析—汽车价格预测任务

热门文章

  1. Java的对象监视器和Condition监视器概念以及对比
  2. Mysql数据库的强制删除
  3. error: Apostrophe not preceded by \
  4. Visual Studio 2010 中文版安装失败的解决办法
  5. linux下实现图像金字塔+Qt5
  6. #1623 : 有歧义的号码
  7. java isempty用法_Java String 的 isEmpty() 与 null 与 区别解析
  8. 用pandas写一个csv表格文件
  9. java汽车租赁行,基于jsp的汽车租赁租车行-JavaEE实现汽车租赁租车行 - java项目源码...
  10. 股票中,什么是市现率,有什么作用?