以下为《魔王语言数据结构实验报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
[问题描述]
有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:
(1) α -> β1β2?βm
(2)(θδ1δ2?δn)->θδnθδn-1? θδ1θ
在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。
[基本要求]
用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。
B -> tAdA (2)A -> sae
[测试数据]
B(ehnxgz)B解释成tsaedsaeezegexenehetsaedsae
若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。 t d s a e z g x n h 天 地 上 一只 鹅 追 赶 下 蛋 恨
一:需求分析
(1)以一维数组demon[i]表示魔王语言.
(2)魔王语言由用户输入,初始保存在demon[i]中. (3)魔王语言与人类语言对应关系固化在程序中. (4)实现过程:
A:初始,魔王语言接收后存放在demon[i]中.
B:初次遍历数组,将数组中括号内的元素入栈,同时插入相应首字母;
C:再次遍历数组,将数组元素依次入队。(小写字母直接入队;大写字母经翻译成相应字符后入队;遇到括号,将栈中保存的元素依次出栈入队)在翻译过程中,如果依旧包含大写字母,则置flag为1,否则为0。
D:将队列中元素赋值给demon[i]。如果此时flag=1,则再次重复C过程。直至所有元素为人类语言。
二:概要设计:
1:设定栈的抽象数据类型定义:
ADT stack{
数据对象:D={ai|ai∈CharSet,i=1,2,?,n,n>=0} 数据关系:R1={|ai-1,ai∈D,i=2,?,n} 基本操作:
initstack (&s)
操作结果:构造一个空栈s. push (&s,e)
初始条件:栈s已存在.
操作结果:在栈s的栈顶插入新的栈顶元素e. pop(&s,&e)
初始条件:栈s已存在.
操作结果:删除s的栈顶元素,并以e返回其值. }ADT stack
2:本程序包含四个模块:
主函数模块.其中主函数为:
status main() {
初始化栈; 初始化队列;
接收魔王语言输入到数组demon[i ]; 遍历数组将括号中元素进栈;
while(数组demon[i ]中元素有大写字母) { 翻译排序处理后入队列;
将对列元素保存在数组demon[i ]; }
输出人类语言(数组demon[ i]); }
2)括号内元素入栈处理模块. tempstack(&temps)
将括号内元素入栈,依次插入首字符. 举例:(abcd)->adacaba.
3)排序入队列模块. sort(&s,&q) {
遍历数组; {
遇到小写字母, 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 动,所以要仔细考虑一循环的条件以及进栈元素的个数.
五:用户手册
1. 本程序运行环境为DOS/WINDOWS操作系统,执行文件为: 魔王语言解释.exe。 2. 进入程序即显示提示信息:
**************************************************
input word-1 explain word-2 quit-0
***************************************************************
测试结果
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《魔王语言数据结构实验报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。