数据结构课程设计完整版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安郵電學院

数据结构课程设计报告

题目:魔王语言翻译/多项式相乘系部名称:

专业名称:

班级:

学号:

学生姓名:

指导教师:

时间:

一、课程设计目的

通过本次课程设计,强化上机动手能力,使我们在理论和实践的基础上进一步巩固《C语言程序设计》、《数据结构——使用C语言》课程学习的内容,初步掌握工程软件设计的基本方法,熟知链表,栈,队以及文件的使用方法,学会将知识应用于实际,提高分析和解决问题的能力,为毕业设计和以后工作打下基础。

二、课程设计内容

【1】、魔王语言

问题描述

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

(1)α→β1β2 ……βm

(2)(θδ1δ2 ……δn)→θδnθδn-1 …… θδ1 θ

在这两种形式中,从左到右均表示解释;从右到左均表示抽象。试写一个魔王语言的解释系统,把他的话解释成人能听懂的话。

基本规则

现在有以下三种规则,设大写字母表示魔王语言解释的词汇,小写字母表示人的语言的词汇;希腊字母表示可以用大写或小写替换的变量。魔王语言可含人的词汇。

(1)B->tAdA

(2)A->sae

(3)示例:

魔王说:B(ehnxgz)B

解释成人的语言:tsaedsaeezegexenehetsaedsae

若每个小写字母含义如下表示:

t d s a e z g x n h

天地上一只鹅追赶下蛋恨

则魔王说的话是:天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅

【2】、多项式相乘

问题描述

用带头结点的动态单链表来表示多项式,在此基础上完成多项式的乘法运算。

三、需求分析

对所开发系统功能、性能的描述,想要实现的目标。

【1】魔王语言

有一个魔王总是使用自己的一种非常精炼的而抽象的语言讲话,没有人能听懂。但他的语言是能够逐步解释成人能听懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的。本系统即按照所给出的规则,逐步将魔王的抽象语言解释成具体易懂的人类语言。

【2】多项式相乘

对于项数比较多,数据比较复杂的多项式在进行人工的相乘,不仅浪费时间,而且耗费精力。本系统主要通过程序,将复杂的多项式进行相乘,并完成相乘后多项式的合并同类项,排序等问题。

四、概要设计

【1】魔王语言

1.系统结构图(功能模块图)

-

2.功能模块说明

【1】魔王语言

(1) 去括号处理模块:

本模块主要应用递归算法。从L[ ]中读取魔王原始语言,将魔王的原始语言进栈,如果遇到右括号,向左遍历,直至遇到左括号,记录左括号后第一个字符。利用队列翻译括号内内容,将队列中内容入栈,处理完之后,剩下的魔王原始语言继续进栈。借用一个新栈将栈中的元素存入L[ ]中。遍历L[ ],如果有括号重复以上操作。 (2) 字符替换模块

从文件mean.txt 中读取替换规则存放在结构体中,此结构体 含有两个成员,第一个成员存放标记性字符,第二个成员存放用于替换的字符。栈顶元素出栈,与结构体第一个成员进行对比,如果相同将此结构体第二个成员入队列;如果不同,直接进队。再取栈顶元素,如此循环,直至所有的元素出栈进队。将队列中的元素存放到L[ ]中。

(3) 汉语含义替换模块

从文件rule.txt 中读取字母及其对应的汉语含义存放在mean 结构体中,此链表仍含有两个成员,第一个成员存放小写字母,第二个成员

存放对应的汉语含义。遍历L[ ],如果与结构体第一个成员相

main 函数

链 栈 队 的初始化

去括号处理

字符替换处理

汉语含义替换

输出并保存

同,将此结构体第二个成员输出及保存,如此循环。

【2】多项式相乘

1.系统结构图(功能模块图)

2、功能模块说明 (1) 多项式输入模块

从键盘输入多项式,并保存在多项式链表中。

(2) 多项式相乘模块

本模块主要包括两层循环。先分别记录下多项式A 和B 的项数,然后通过循环将多项式A 的每一项与多项式B 的每一项进行相乘:系数相乘,指数相加。然后每乘得一项,便调用函数以头插法的方法存放在新的多项式链表C 中。

(3)排序模块

利用冒泡排序的思想。比较指数,如果指数相同,将系数相加如果相加为零,将两个节点删除,如果不为零,将第二个节点删除。如果前一个节点的指数大于后一个,交换两个节点的系数域和指数域。

五、详细设计及运行结果。

【1】魔王语言

(1)流程图

main 函数

相乘模块 输入多项式

输出模块

排序模块

开始

输入魔王语言

初始化链表,队列,栈

读取rule文件

读取mean文件

去括号处理

字符替换处理

字母及对应汉字含义处理输出原始语言

输出替换后字母

输出汉语

结束

tackle-12

(2)运行结果

读rule

文件

读mean 文件

开始

L[i]!=NULL

J<20 输出汉语

I++

结束

相关文档
最新文档