数据冒险之栈应用(数制转换、括号匹配)

2023-12-27 09:08

本文主要是介绍数据冒险之栈应用(数制转换、括号匹配),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include<iostream>
#include"stdlib.h"
#include"MyStack.h"using namespace std;/******************************栈应用----数制转换
描述:输入任意的十进制正整数N,分别输出该整数N的二进制、八进制、十六进制的数公式:N=(N div d)*d+N mod d (div表示整除,  mod表示求余)(1348)=(2504)(O)=(544)(0x)=(10101000100)(B)短除法:N         N div 8        N mod 81348      168             4168       21              021        2               52         0               2N         N div 8        N mod 81348        84              484          5               45           0               5目的:通过实例灵活掌握栈机制的使用技巧
*/
#define BINARY          2
#define OCTONARY        8
#define HEXADECIMAL     16
int main()
{char num[] = "0123456789ABCDE";int elem = 0;MyStack<int> *pStack = new MyStack<int>(40);int N = 0;int mod = 0;int mode = 0;cout << "please input a number :";cin >> N;cout << "Choice a mode from :BINARY,OCTONARY or HEXADECIMAL ";cin >> mode;while (N != 0)     //取余{switch (mode){case(2) :mod = N%BINARY;pStack->push(mod);N /= BINARY;break;case(8) :mod = N%OCTONARY;pStack->push(mod);N /= OCTONARY;break;case(16) :mod = N%HEXADECIMAL;pStack->push(mod);N /= HEXADECIMAL;break;default:cout << "sorry,your input is worry" << endl;break;}}//  pStack->stackTraverse(0);//  for(int i=pStack->stackLength()-1;i>=0;i--)//  {//      cout<< num[i]//  }cout << "the result is : " ;while (!pStack->stackEmpty()){pStack->pop(elem);cout << num[elem];}cout << endl;delete pStack;pStack = NULL;return 0;
}

括号匹配:

#include <iostream>  
#include "MyStack.h"  
using namespace std;int main(void)
{MyStack<char> *pStack = new MyStack<char>(30);     MyStack<char> *pNeedStack = new MyStack<char>(30);/*char *ch;int i, flag = 1;ch = new char[30];cin >> ch;char elem;int length = strlen(ch);for (i = 0; i < length; i++){if (ch[i] == '(' || ch[i] == '['){pStack->push(ch[i]);}else if (ch[i] == ')'){pStack->pop(ch[i]);if (ch[i] != '('){cout << "括号不匹配" << endl;flag = 0;}}else if (ch[i] == ']'){elem = pStack->pop(ch[i]);if (ch[i] != '['){cout << "括号不匹配" << endl;flag = 0;}}}if (pStack->stackLength() != 0){cout << "括号数量不匹配" << endl;flag = 0;}if (flag == 1)cout << "括号匹配" << endl;*/char *str = new char[30];cout << "请输入括号" << endl;cin >> str;char currentNeed = 0;for (int i = 0; i < strlen(str); i++){if (str[i] != currentNeed){pStack->push(str[i]);switch (str[i]){case'[':if (currentNeed != 0){pNeedStack->push(currentNeed);}currentNeed = ']';break;case'(':if (currentNeed != 0){pNeedStack->push(currentNeed);}currentNeed = ')';break;default:cout << "括号不匹配" << endl;return 0;}}else{char elem;pStack->pop(elem);if (!pNeedStack->pop(currentNeed)){currentNeed = 0;}}}if (pStack->stackEmpty()){cout << "括号匹配" << endl;}delete pStack;pStack = NULL;delete pNeedStack;pNeedStack = NULL;return 0;
}


这篇关于数据冒险之栈应用(数制转换、括号匹配)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java轻松实现PDF转换为PDF/A的示例代码

《Java轻松实现PDF转换为PDF/A的示例代码》本文将深入探讨Java环境下,如何利用专业工具将PDF转换为PDF/A格式,为数字文档的永续保存提供可靠方案,文中的示例代码讲解详细,感兴趣的小伙伴... 目录为什么需要将PDF转换为PDF/A使用Spire.PDF for Java进行转换前的准备通过

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl