数据结构课程设计.pdfVIP

  • 0
  • 0
  • 约5.72千字
  • 约 6页
  • 2026-02-14 发布于河南
  • 举报

数据结构课程设计

数据结构课程设计读书工程报告

-1-

数据结构课程设计读书工程报告

黑龙江大学数据结构课程设计课程设计》《数据结构课程设计》

读书报告

学院年级专业学号姓名日期成绩计算机科学与技术学院

2010计算机科学与技术刘曈霖2011年12月2日星期五

黑龙江大学计算机科学技术学院黑龙江大学软件学院

数据结构课程设计读书工程报告

一、基本理论阐述

1.算术表达式求解算法算术表达式求解算法

任何一个表达式都是有操作数(operand)运算符(operator)。

和界限符组成的,我们称他们为单词。一般地,操作数既可以是常数

也可以是被说明为变量或常量的表示符;运算符可以分为算数运算符,

关系运算符和逻辑运算符3类;基本界限符有左右括号和表达式结束

等。我们根据算数四则运算的规则:(1)先乘除,后加减;(2)

从左算到右;(3)先括号内,后括号外;在每一步运算中,任意的

两个相继出现的运算符θ1和θ2之间的优先关系至多是下面三种关系

之一。大于,小于,等于;这里我们不给出各个运算符的优先级关系。

具体情况参考《数据结构》。我们直接给出算法:为实现算符优先算

法,可以使用两个工作栈。一个称做OPTR,用于寄存运算符;另外

一个称作OPND,用于寄存操作数或运算结果。算法的基本思想是:

(1)首先置操作数栈为空栈,表达式其实符“#”为运算符栈的栈底元

素;(2)一次读入表达式中的每个字符,若使操作数则进OPND栈,

若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,

直至整个表达式求解完毕

2.最小生成树算法.

I.Prim算法:假设N={V,{E}}是连通网,TE是最小生成树变得

集合。算法从U={u0}(u0属于V),TE{}开始,重复执行下述操作:

在所有u属于U,v属于V-U的边(u,v)属于E中找到一条代价最

小的边(u0,v0)并入集合TE,同时v0并入U直至U=V为止。

此时TE中必有n-1条边,T=(V,{TE})则为N的最先生成树。

-1-

数据结构课程设计读书工程报告

图为Prim算法生成最小生成树的过程。

图1.prim算法构造最小生成树的过程我们可以看出Prim的算法

核心策略是贪心。II.Kruskal算法:假设WN=(V,{E})是一个含有n

个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:

先构造一个只含n个顶点,而边集为空的子图,若将该子图中各个顶

点看成是各棵树上的根结点,则它是一个含有n棵树的一个森林。之

后,从网的边集E中选取一条权值最小的边,若该条边的两个顶点分

属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的

两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上,

则不可取,而应该取下一条权值最小的边再试之。依次类推,直至森

林中只有一棵树,也即子图中含有n-1条边为止。

-2-

数据结构课程设计读书工程报告

图2.Kruskal算法生成最小树的过程。由此可见Kruskal算法的

核心策略也是贪心算法。

二、当前应用现状两种算法的应用都非常的广泛,表达式求解算

法在制作计算器是经常会使用到。而最小生成树的应用则是更加的广

泛。在我们的日常生活中经常可以看见。比如题中的铺设电网问题等

等。

三、对XXXX部分的体会学习一个算法,不紧紧是学习他是如何

实现的,更需要学习它的思想,感受算法的魅力。比如生成树中运用

了非常多的思想,贪心,枚举,排序等等一系列基础思想。但是用这

些思想我们就能解决一个大问题。这难道不是一件非常美妙的事情么。

就像变魔术一样。只有你想不到的,没有你做不到的。

四、课程设计过程中的应用与实践

I.表达式求解算法.(1)问题描述及分析-3-

数据结构课程设计读书工程报告

文档评论(0)

1亿VIP精品文档

相关文档