#include <QCoreApplication>
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10  //存储空间增量
/*-----------------------------------------------*/
typedef struct//顺序栈的表示
{int *top;int *base;//在栈构造之前和销毁之后,base的值为NULLint stacksize;
}SqStack;
/*-----------------------------------------------*/
int InitStack(SqStack &S)//构造一个空栈
{S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!S.base)exit(0);//存储空间分配失败S.top = S.base;S.stacksize=STACK_INIT_SIZE;return 0;
}
/*-----------------------------------------------*/
int GetTop(SqStack &S,int e)
{ //若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1if (S.top==S.base)return 1 ;e=*(S.top-1);return 0;
}
/*-----------------------------------------------*/
int Push ( SqStack &S , int e )
{ //插入元素e为新的栈顶元素if( S.top - S.base >= S.stacksize )  //栈满,追加存储空间{S.base = ( int * ) realloc ( S.base , (S.stacksize + STACKINCREMENT ) * sizeof ( int ) ) ;if (!S.base) return 1 ;    //存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top++ = e ;return 0 ;
}
/*-----------------------------------------------*/
int Pop(SqStack &S ,int e)
{ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回1if ( S.top == S.base ) return 1 ;e = *--S.top;//先将栈顶指针减1,再移动栈顶元素return 0;
}
/*-----------------------------------------------*/
int StackEmpty (SqStack &S)
{ //若栈空,则返回1,否则返回0if (S.top == S.base)return 1 ;return 0 ;
}
/*-----------------------------------------------*/
int ClearStack(SqStack &S)//把S置为空栈
{S.base=S.top;return 0;
}
/*-----------------------------------------------*/
int DestroyStack(SqStack &S)
{ //销毁栈S,栈S不再存在free(S.base);S.base=S.top=NULL;   //防止程序后面不小心使用了它return 0;
}
/*-----------------------------------------------*/
void conversion(int n)
{int e;SqStack S;InitStack(S);while(n){Push(S,n%8);n=n/8;}while(!StackEmpty(S)){Pop(S,e);printf("%d",e);}printf("\n");DestroyStack(S);
}
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int n;printf("请输入十进制数\n");scanf("%d",&n);conversion(n);return a.exec();
}

注意:C++函数的形参为引用,如果C语言改成指针。函数传值特性。

http://www.oschina.net/question/1998568_175149

利用栈实现精制转换c++相关推荐

  1. 数据结构:利用栈实现数制转换

    数制转换 从键盘输入一个十进制数n,并输入要转换的进制数m,利用栈将n转换成m进制,并输出转换后的结果. 首先设计一个含有多个菜单项的主菜单程序,然后再为这些菜单项配上相应的功能. 主菜单设计要求: ...

  2. 利用栈进行数制转换和括号匹配(C语言)

    数制转换:将十进制数转换为任意进制数.由数制转换的计算公式 N = (N / d) × d + N % d (其中N为想转换的十进制数,d为想转换的进制) 我们可以知道其转换后的结果是逆序输出,故可以 ...

  3. 简单的利用栈 将二进制转换成十六进制

    将刚刚的二进制转换成八进制的程序改改就行了,如果有能读懂刚刚程序的人,这个so easy 就是换几个数,我就不多解释了 #include <stdio.h> #include <st ...

  4. 算法设计-利用栈把十进制转换成二进制

    十进制转换成二进制 void conversion(){ InitStack(S); scanf("%d",n); while(N){ Push(S,n%2) n=n/2; } w ...

  5. C语言中用栈实现进制转换,利用栈实现进制转换问题

    进制转换问题 建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换. 输入 输入只有一行,就是十进制整数. 输出 转换后的二进制数. 样例输入 10 样例输出 1010 十进制怎么转为二进制?十进制 ...

  6. 数据结构学习笔记:利用栈实现进制转换

    数据结构学习笔记:利用栈实现进制转换 一.除基倒取余法示意图 二.编写十进制转换成二进制Python程序 1.源代码 2.运行结果 其实Python提供了一

  7. 数制转换2(利用栈)

    /* 题目:数制转换(通过栈这个数据结构来求解) 内容:输入M进制的数x,输出N进制的数. 作答者:小白杨 收获:1.栈这种数据结构,只允许在栈顶进行出栈入栈操作. 2.先构造出栈的基本结构,然后初始 ...

  8. 利用栈实现十进制对二进制,八进制、十六进制的任意转换(N进制)

    1.程序代码如下(利用栈的动态分配实现): #include<stdio.h> #include<stdlib.h>#define ERROR 0 #define OK 1 # ...

  9. 利用栈和递归实现进制转换——数据结构实验报告

    一.实验名称:栈的应用--进制转换 二.实验目的 熟练掌握栈的两种存储方式的具体实现过程,并分别使用递归和非递归两种方式,实现进制转换. 三.实验要求 顺序栈和链栈两种存储方式任选一种,实现从十进制到 ...

最新文章

  1. linux支持中文文件名,CentOS安装中文支持(linux中文文件名乱码)
  2. 目标跟踪从0到1:算法与实践
  3. Badboy自动化测试工具11 导出脚本用于Jmeter并发测试
  4. 小程序返回上一页并传参
  5. MySQL中AES_ENCRYPT('密码','钥匙')函数 可以对字段值做加密处理
  6. 2. SpringBoot +Mybaits
  7. mysqldump 备份命令使用中的一些经验总结
  8. [状压dp][剪枝搜索] 洛谷 P2831 愤怒的小鸟
  9. C/C++笔记(01):容易出错的几个库函数
  10. Android 开机动画的制作
  11. 哈希碰撞,改变世界的原力
  12. PSSP Based on Data Partition and Semi-Random Subspace Method 论文笔记
  13. Anaconda自带python,在cmd中输入python提示不是内部命令或外部命令
  14. mysql outer join报错_千与千寻-MySQL联结join
  15. 一、软件测试学习方向
  16. 8 种方案机智应对后端一次性返回 10万 条数据
  17. SpringSecurity+Mybatis实现用户自助注册登录(含角色),打造简单安全的注册登录页面。
  18. 哲理短文-人生什么最重要
  19. 正则表达式(BREs,EREs,PREs)差异比较
  20. C13-COBOL 文件处理动词

热门文章

  1. Premiere Pro CC2019安装详细教程
  2. 市场热度持续提升!4D成像雷达进入「细分场景争夺战」
  3. Unity引擎UI模块知识Tree
  4. CeSi 安装与配置
  5. git--基本知识点--1--工作区/暂存区/版本库
  6. 解决百度云下载缓慢问题
  7. Python入门篇(二)
  8. 舰队collection服务器维护,舰娘百科 - 专业性的舰队Collection百科全书
  9. 柯西飞行,瑞利飞行,莱维飞行,重尾分布、随机游走
  10. java通信—网络聊天室网络画板(简陋版)