西安郵電學院
数据结构课程设计报告
题目: 魔王语言
院系名称: 计算机学院
专业名称: 软件工程
班级:
学生姓名:
学号(8位):
指导教师:
设计起止时间:
一. 设计目的
熟悉链表、队列、栈、排序、查找、文件等内容的的使用。
将数据结构的内容结合到一起使用。
熟悉掌握数据结构的内容。
4、了解递归与非递归的使用。
二. 设计内容
以栈和队列为数据结构,使用文件读写、查找等操作,完成对魔王语言的解释。
开始
;
主函数
结束
将结果保存到文件中
将魔王语言翻译为汉语意思
将魔王的话转化成小写字母
将栈中的元素存入数组中
调用取括号函数
输入魔王说的话
各个模块详细的功能描述。。
入栈操作函数 int push(Stack *s,char x)
讲传递过来的字符入栈;
出栈操作char pop(Stack *s)
将当前栈顶的字符出栈,并将其返回;
入队操作函数int queue_in(Queue *p,char ch)
将传递过来的ch中的字符入队;
出队操作char queue_out(Queue *p)
将当前队头的字符出队,并将其返回;
去除魔王语言中括号模块void deletenode(Stack *s,Queue *r,char a[],int i)
利用队栈的进栈出栈操作,入队出队操作,将魔王语言中的括号去除,使之成为一个字母的序列;
6 .文件读取函数void read_file() ,void word_file()
通过文件函数,读取rule和mean文件,并将其输出到终端;
将栈中的元素存入数组中void store(char a[],Stack *s)
将栈中的元素按次序存入到数组中;
8. 魔王语言转字母语言void change(char a[])
将输入的魔王语言通过循环判断转换成字母语言;
9 .将字母语言翻译为人类语言void translate(char a[],struct Word *h)
将已经由魔王语言转换成的字母语言通过对照转换成人类语言
文件保存函数void save_file(struct Word *h)
将已经转换好的魔王语言保存到自定义路径。
main函数
将结果
存文件
魔王的话转化成小写
从
件中读入规则
解释为汉意
显示
从文件中读入汉意
调用取括号函数
读入魔王所说的话
(1)取括号函数deletenode(&s,&r,a,i);
入A栈
入F栈
入目的队列
结束
将处理结果放回栈
一层
处理一层括号
右括号
左括号后非第一个字母
左括号后第一个字母
括号中内容
从Q中弹出一个元素
Q是否为空
定义变量,初始化栈以及队列
开始
流程图:
Y
N
是否为括号中内容
N
Y
将处理结果放回队列
Y
N
(2)转化成小写字母函数change(a);
流程图:queue是否为空
定义变量,初始化栈以及队列
开始
Y
N
从队列Q中弹出元素放于data中
Data为大写字母
N
调用的函数执行递归
Y
入队列Q
结束
开始
(3)翻译为汉语意思函数translate(a,l);
初始化
规则内容存在
N
大写字母所对应的规则内容放于数组str中
Y
Str[i]大写
Y
入队列Q,i++
N
Str[i]存在
Y
结束
N
(4) 读大小写对应规则void read_file();
流程图:开始
打开文件失败
Y
从文件中读取信息
N
文件结束
Y
保存链表
N
关闭文件
结束
开始
(5) 将字母与汉字相匹配流程图
开始
初始化data
Q是否为空
Y
N
弹出对头元素data
查找data对应的汉字
结束
重点设计及编码
1. 去括号函数deletenode(&s,&r,a,i);
void deletenode(Stack *s,Queue *r,char a[],int i)
{
int j,flag;
char ch,t;
while(i>=0)
{
while(i>=
数据结构课程设计报告-魔王语言实验报告 来自淘豆网m.daumloan.com转载请标明出处.