魔王语言实现源代码.pdf
2.2魔王语言实习报告
班级:信管08-2姓名:陈明学号:0801051401
一、需求分析
(1)魔王语言有两条规则规则1可以由用户自己确定存储于
expression[26[[6]中(每个魔王词汇最多只能转换成5个人类语
言,规则2则为(@a(1)a(2)a(3)a(4)…..a(n))-(@a(n)@a(n-1)
不能更改。
(2)程序会提示用户是否需要自己定义规则1。选N则是使用默认
的规则(为A=sae,B=tAdA,C=sce,E=sde,其他为零),选
定规则后输入魔王语言(只能是人类词汇和魔王词汇)则输入
一个可以有括号的英文字母字符串。回车后程序就会输入解释
后的魔王语言。
(3)测试数据为:默认规则1魔王语言:B(ehnxgz)B解释后:
tsaedsaeezegexenchetsaedsae
自定义规则1A=aaaB=C=ccc其他为0魔王语言:B
(AC)B解释后为:
aaacccaaa
(4)程序执行的命令为:
a.创建魔王语言规则1。b.输入魔王语言。c.解释魔王语言。
二、概要设计
1.设定栈的抽象数据类型定义:
ADTStack{
数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n=0}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n}
约定其中an端为栈顶,ai端为栈尾。
基本操作:
InistStack(S)
操作结果:构造一个栈S。
DestroyStack(S)
初始条件:栈S已存在
操作结果:栈S被销毁。
StackEmpty(S)
初始条件:栈S已存在
操作结果:若栈S为空栈,则返回TRUE,否
则FALSE
GetTop(S,e)
初始条件:栈S为非空
操作结果:用e返回S的栈顶元素
Push(S,e)
初始条件:栈S已存在
操作结果:插入元素e为新的栈顶元素。
Pop(S,e)
初始条件:栈S已存在并且为非空
操作结果:用e返回S的栈顶元素,并删除S
的栈顶元素。
}ADTStack
2.队列的抽象数据类型图的定义如下:
ADTQueue{
数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n=0}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n}
约定其中ai端为队列头,an端为队列尾。
基本操作:
InitQueue(SqQueueQ)
操作结果:构造一个空队列Q
DestroyQueue(Q)
初始条件:队列Q已存在
操作结果:队列Q清为空队列。
QueueEmpty(Q)
初始条件:队列Q已存在
操作结果:若队列Q为空队列,则返回TRUE,