数据结构课的作业

[问题描述]
有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:
(1) α -> β1β2…βm
(2)(θδ1δ2…δn)->θδnθδn-1… θδ1θ
在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。
[基本要求]
用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。
(1)B -> tAdA
(2)A -> sae
[测试数据]
B(ehnxgz)B解释成tsaedsaeezegexenehetsaedsae

#include<iostream>
#include<stack>
#include<queue>
#include<string>
using namespace std;
class str {
public:int init(char x,string y) {base = x;next = y;lenth = y.size();return 0;}char base;string next;int lenth;
};
int main() {class str a[10];int n = 2;//n种对应关系 默认为2/*cin >> n;for (int i = 0; i < n; i++) {//多种关系时使用char tox;string toy;cin >> tox >> toy;a[i].init(tox, toy);}*/a[0].init('B',"tAdA");a[1].init('A', "sae");string mowang;cin >> mowang;stack<char>s, s1, s2, s3;int temp = 0;for (int i = mowang.size() - 1; i >= 0; i--) {s.push(mowang[i]);//将魔王说的话倒序压入栈s中if (mowang[i] == '(')//记录括号的组数,几组括号进行几次循环temp++;}char flag;while (temp--) {while (s.top() != ')') {//把s中数据压入S1中直到找到第一个右括号s1.push(s.top());s.pop();}s.pop();while (s1.top() != '(') {//把s1中数据压入s2中直到找到第一个左括号s2.push(s1.top());   //此时s2中存入的便是嵌套最深的括号的内容s1.pop();}s1.pop(); flag = s2.top();//此时的顶端是(θδ1δ2…δn)中的θ,单独保存s2.pop();while (!s2.empty()) {s3.push(s2.top());//将剩余的压入s3中s2.pop();}while (!s3.empty()) {//将s3中数据与θ交替插入s1.push(flag);s1.push(s3.top());s3.pop();}s1.push(flag);}while (!s.empty()) {//将剩余的插入s1.push(s.top());s.pop();}stack<char>result;while (!s1.empty()) {result.push(s1.top());s1.pop();}string r;while (!result.empty()) {r = r + result.top();result.pop();}while (n--) {//n种关系处理n次,我就不信还能有missfor (int i = 0; i < r.size(); i++) {if (r[i] == a[0].base)r = r.substr(0, i) + a[0].next + r.substr(i + 1);if (r[i] == a[1].base)r = r.substr(0, i) + a[1].next + r.substr(i + 1);}}cout << r << endl;return 0;
}

岂能尽如人意,但求无愧于心

魔王语言解释 C++相关推荐

  1. 数据结构 -- 魔王语言解释

    这是数据结构的实验~~ 这是实现一个魔王语言解释器. 这里是采用栈,队列,线性表的综合实现的. 这个程序没上交,所以是中文注释的. 其实这个程序本身实用性不强,但是是个很不错的题目. Experime ...

  2. 数据结构习题集之魔王语言解释

    魔王语言解释 问题描述有 一个魔王总是使用自已的一种非常精练而抽象的语言讲话,没有人能听得懂. 但他的语言是可以逐步解释成人能懂的语言的,因为他的语言是由以下两种形式 的规则由人的语言逐步抽象上去的: ...

  3. 魔王语言解释C(可输出)

    魔王语言 魔王语言解释问题 问题 1.问题描述 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的 ...

  4. 数据结构|魔王语言解释

    魔王语言解释 一.需求分析 1.有一个魔王总是使用自己的一种非常精炼而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去 ...

  5. 魔王语言解释(数据结构课程设计)

    魔王语言解释(数据结构课程设计) 1.魔王语言解释 问题描述:魔王的语言精练而抽向,将他的语言按如下规则可转换成人的语言:(1) B转换为tAdA:(2) A转换为sae:(3) (qd1d2--dn ...

  6. XDOJ魔王语言解释

    title: 魔王语言解释 date: 2022-05-13 17:39:53 tags: C语言 categories: 数据结构 问题输入 一组数据,数据为一个字符串,表示一个待翻译的字符串. 转 ...

  7. 数据结构课程设计---魔王语言解释

    [问题描述] 有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1) α ...

  8. 数据结构课程设计:魔王语言解释

    1.[问题描述] 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能昕得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α ...

  9. G-08 魔王语言解释 (20 分)

    有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听的懂.但他的语言是可以逐步解释成人能懂得语言的,因为他的语言是由以下两种形式的规则由人的语言逐 步抽象上去的: α->β1β2-βn ...

最新文章

  1. Day20 Ajax
  2. c ef框架-mysql_.net EF框架 MySql實現實例
  3. 如何给docker容器分配内存和cpu
  4. 好系统重装助手教您如何设置宽带并连接无线上网
  5. QT的QRegularExpressionValidator类的使用
  6. Python 中的作用域
  7. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——EmpDao层代码
  8. c语言cin输入数组,C++基础:各种输入方法总结cin.get()、
  9. IP地址开启https
  10. python安装lzo_hadoop-lzo 安装配置
  11. 【转】ZooKeeper学习第二期--Zookeeper命令操作
  12. pta 编程题10 Root of AVL Tree
  13. Ubuntu16.04 安装显卡驱动 cuda,cudnn
  14. 通过Keepalived实现Redis Failover自动故障切换功能[实践分享]
  15. C++ UNICODE 文件读写相关
  16. 2021最新软件测试V4.0版本教程
  17. mysql 性能指标计算_干货|MySQL 性能指标及计算方法总结
  18. 个人微信开发api文档
  19. zer0pts CTF 2022 VishwaCTF 2022
  20. 露出真容,小米家用摄像头拆解,看看有什么

热门文章

  1. 设置Layui表格字段的字体颜色
  2. 用Java写一个监视者模式
  3. 每日积累【Day 3】Hbase架构深入学习
  4. 【转载】VS2019使用技巧
  5. C/C++运行错误收藏
  6. leetcode之字母异位词分组
  7. ZZUNOJ 1008 美元和人民币
  8. lua遍历目录下所有文件
  9. Netty相关面试题汇总
  10. 电脑配置要多少功率的电源?电源功率越大越好吗?