#include<stdio.h>          //栈的顺序存储
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
#define MAXSIZE   100
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
//#define SElemType int
#define OK 1
#define ERROR 0
#define  TRUE  1
#define  FALSE 0
#define  OK    1
#define  ERROR 0
#define  INFEASIBLE -1
#define  OVERFLOW   -2
#define  STACK_INIT_SIZE  100
#define  STACKINCREMENT    10
#define SElemType int
typedef  int  ElemType;
typedef  int    Status;
#define stack_size 100
#define stack_crement_size 10
typedef int Elemtype;///声明一个栈
typedef struct Stack
{Elemtype *top;Elemtype *base;int stacksize;
}sqstack;//函数声明
void IntiStack(sqstack *s);
int Push(sqstack* s,Elemtype e);
void Pop(sqstack* s,Elemtype *e);
int StackLen(sqstack s);
int StackEmpty(sqstack* s);
void DestoryStack(sqstack* s);
//始化栈
void IntiStack(sqstack *s)
{s->base = (Elemtype*)malloc(sizeof(Elemtype)*stack_size);if(!s->base)exit(0); s->top = s->base;                 //设置栈为空 s->stacksize = stack_size;
}//入栈操作
int Push(sqstack* s,Elemtype e)
{if(s->top - s->base >= s->stacksize)    //判断是否栈满 {s->base = (Elemtype*)realloc(s->base,(s->stacksize + stack_crement_size)*sizeof(Elemtype));if(!s->base)exit(0);s->top = s->base + s->stacksize;                                   //重新设置栈顶 s->stacksize += stack_crement_size;                                //重新设置栈的大小 }*(s->top) = e;s->top++;return 1;
}
//出栈操作
void Pop(sqstack* s,Elemtype *e)
{if(s->top == s->base)                                                //如果栈为空 return;*e = *--(s->top);
}//求栈的当前容量
int StackLen(sqstack s)
{return s.top - s.base;
}//清空栈
int StackEmpty(sqstack* s)
{return (s->stacksize == 0);
}
//销毁栈
void DestoryStack(sqstack* s)
{int i,len;len = s->stacksize;for( i = 0; i <len; i++){s->base++;free(s->base);}s->base = s->top = NULL;s->stacksize  = 0;
}int main(void)
{sqstack s;int i,c,k;int j = 0;               //用来记录转化后的8进制数位数 int N;printf("请输入一个十进制数:");scanf("%d",&N); int W = N; IntiStack(&s);           //初始化栈 while(N != 0)          //除k取余法转换,并把余数入栈{k = N%8;Push(&s,k);N = N/8;j++;}printf("十进制数 %d 转化为八进制数为: ",W);for( i=0; i<j; i++){Pop(&s,&c);printf("%d",c);}//DestoryStack(&s);printf("\n");return 0;
}

函数运行结果

初始化栈、入栈、出栈、栈空、数制转换函数和主函数,实现1348转换成8进制的功能。相关推荐

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

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

  2. 利用栈的基本操作,将一个十进制数转换成8进制数

    题目 利用栈的基本操作,将一个十进制数转换成8进制数 #include<iostream>using namespace std;#define MAXSIZE 100 typedef i ...

  3. 万能进制转换器——栈应用

    万能进制转换器--栈应用 前言 一.设计思路 1.字符串和数字通过ASCII码来转换 2.先将用户输入的数字转换为10进制,再由10进制转为其他进制 二.具体步骤的实现 1.准备步骤 1.执行步骤 ( ...

  4. 顺序栈实现将十进制整数转换为r(2、8、16)进制数

    参考代码1: /顺序栈结构利用数组实现-参数由指针传递/ #include<stdlib.h> #include<stdio.h> #include<stddef.h&g ...

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

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

  6. C语言栈实现进制转换

    栈-10进制任意转换 设计思路 例如讲10进制转换为2进制计算思路为: 利用循环将每一个余数都压入栈中,再遍历出栈 转换代码: /*进制转换 */ scStack *sysConvert(int nu ...

  7. 用栈实现将十进制数转换为任意进制数(2,8,16...).

    解题思路:假如N为输入的数,n为要转换为的进制,若要将十进制231转换为8进制数,过程如下; N                        N/n                      N%n ...

  8. 栈简介、手撸顺序栈、手撸链栈和栈的应用

    一. 简介 1. 什么是栈? 栈是一种只能从表的一端存取数据且遵循 "先进后出"("后进先出") 原则的线性存储结构.栈也是用来存储逻辑关系为 "一对 ...

  9. 「栈」的应用系列之「进制转换」

    大家都知道,计算机底层计算采用的是二进制,计算机的数据存储也是采用二进制,在网络上,设备与设备之间的通信,最终还是要通过二进制比特流来实现.可以说,二进制是信息时代的基础.那么大家有没有想过,既然计算 ...

最新文章

  1. MFC窗体控件随窗体变化
  2. GD32的flash读、擦除、写操作
  3. 铁路 12306 网站否认发生用户信息泄漏
  4. linux 修改ssh banner
  5. Android ListView 的优化
  6. 第8章 线性时间排序
  7. POE供电交换机技术分析及工作过程详解
  8. SAR数据集项目说明文档写作
  9. [软件更新]暴风影音2009最新特别版光盘免费赠送(暴风门特别版)
  10. Docker 资料整理
  11. c++ qt 汉字转拼音 自适应多音字处理 姓名自动切分 开源代码
  12. matlab正太分布的反函数,怎样用matlab求标准正态分布函数的反函数函数值
  13. ElasticSearch安装中文分词器IK和拼音分词器
  14. 关于NMDS的一知半解
  15. [高项]工作绩效数据 vs工作绩效信息 vs工作绩效报告
  16. BlockChain的理解
  17. 7-20 打印九九口诀表(分数 15)
  18. python 报 KeyError: ('coupon_type', 'occurred at index act_code')故障
  19. %f在c语言中是什么意思,在C语言中,%d,%c,%f都是什么意思,请详细的说一下,谢谢了...
  20. 入门了解学hybris和sap的需要内容(自己整理)

热门文章

  1. 前端入门(雨滴特效,css)
  2. 计算机保研去北科大还是大工,全部保研!大工这寝室太牛
  3. 台式计算机系统重新安装软件,有人教我重装电脑程序的吗,谢谢了
  4. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...
  5. 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理
  6. RStudio v1.2.1335 发布,R 语言的集成开发环境
  7. 5.6. Spring boot with Logging
  8. 如何将mysql数据导入Hadoop之Sqoop安装
  9. linux下的rabbitmq安装与配置
  10. Ubuntu常用命令大全[显示桌面]