数制转换_顺序栈_头文件

2024-02-06 00:32
文章标签 转换 顺序 头文件 数制

本文主要是介绍数制转换_顺序栈_头文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

将写好的头文件添加到工程的文件夹Head内,然后再编写源程序。

//
//Description:顺序栈.h
//
#include <iostream>
#include <malloc.h>
using namespace std;#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10typedef int Status;
typedef int SElemType;//顺序栈的定义
typedef struct
{SElemType *base;SElemType *top;int stacksize;
}SqStack;//---------------以下为基本操作
//构造一个栈
Status InitStack(SqStack &S)
{S.base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));if (!S.base){cout << "存储空间分配失败!" << endl;return 0;}S.top = S.base;S.stacksize = STACK_INIT_SIZE;return 1;
}//初始化一个栈
Status Input(SqStack &S, int n)
{int i;if (n > 0){cout << "请输入第" << 1 << "个元素的值" << endl;cin >> *S.base;S.top++;for (i = 2; i <= n; i++){cout << "请输入第" << i << "个元素的值" << endl;cin >> *S.top;S.top++;}return 1;}else{cout << "输入数据不合法!" << endl;return 0;}}
//判断栈是否为空栈
Status StackEmpty_Or_not(SqStack S)
{if (S.top == S.base){return 0;}elsereturn 1;}//查看栈顶元素
Status GetTop(SqStack S, SElemType &e)
{if (S.top == S.base){cout << "目前为空栈,无栈顶元素!" << endl;return 0;}e = *(S.top - 1);cout << "当前栈顶元素为" << e << endl;return 1;
}//向栈顶插入一个元素
Status Push(SqStack &S, SElemType e)
{if (S.top - S.base >= S.stacksize){S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType));if (!S.base){cout << "执行插入操作分配存储空间时失败!" << endl;return 0;}S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top++ = e;return 1;
}//删除栈顶元素
Status Pop(SqStack &S, SElemType &e)
{if (S.top == S.base){cout << "目前为空栈,无法执行删除栈顶元素的操作!" << endl;return 0;}e = *--S.top;return 1;
}

//
//Description:顺序栈.cpp
//
#include <iostream>
#include "顺序栈.h"
using namespace std;SqStack stc;//对于输入的数据进行数制转换
int conversion()
{InitStack(stc);int value, jinzhi;
loop:  cout << "请输入欲进行转换的数据以及欲转换成的进制数(*两者都得大于0)" << endl;cin >> value >> jinzhi;if (value <= 0 || jinzhi <= 0){cout << "您输入的数据不合法(应该>0)" << endl;goto loop;//  return 0;}cout << "数据 " << value << " 转换成 " << jinzhi << " 进制的数据后,其值为 :" << endl;while (value){Push(stc, value%jinzhi);value = value / jinzhi;}while (StackEmpty_Or_not(stc)){Pop(stc, value);cout << value;}cout << endl;return 1;
}void main()
{cout << "================数制转换===========" << endl;conversion();
}

这篇关于数制转换_顺序栈_头文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682652

相关文章

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

ispunct函数讲解 <ctype.h>头文件函数

目录 1.头文件函数 2.ispunct函数使用  小心!VS2022不可直接接触,否则..!没有这个必要,方源一把抓住VS2022,顷刻 炼化! 1.头文件函数 以上函数都需要包括头文件<ctype.h> ,其中包括 ispunct 函数 #include<ctype.h> 2.ispunct函数使用 简述: ispunct函数一种判断字符是否为标点符号的函

解决C/C++ 头文件相互包含 问题的方法

所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。 类A和类B需要彼此互相引用,这样必然有一个类会先被定义,而另外一个类后被定义,这样在 先被定义的类引用后被定义的类的时候,就导致了所谓的超前引用。 超前引用导致的错误有以下几种处理办法:   1) 使用类声明    在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。其使用方法是

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是

[数据结构]队列之顺序队列的类模板实现

队列是一种限定存取位置的线性表,允许插入的一端叫做队尾(rear),允许删除的一端叫做队首(front)。 队列具有FIFO的性质 队列的存储表示也有两种方式:基于数组的,基于列表的。基于数组的叫做顺序队列,基于列表的叫做链式队列。 一下是基于动态数组的顺序队列的模板类的实现。 顺序队列的抽象基类如下所示:只提供了接口和显式的默认构造函数和析构函数,在派生类中调用。 #i

[数据结构]栈之顺序栈的类模板实现

栈的数组实现形式,采用动态分配数组,不够时可以调整栈的大小。 Stack.h文件:主要定义栈的抽象基类,提供公共的接口函数。 #ifndef STACK#define STACK//栈的抽象基类template<class T>class Stack{public:Stack(){}~Stack(){}virtual void Push(const T& x)=0;virt

C++中类的构造函数调用顺序

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的 构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。 简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是 要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时, 如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。