第10章-综合应用设计Java版-课件

上传人:沈*** 文档编号:241669834 上传时间:2024-07-14 格式:PPT 页数:59 大小:1.88MB
返回 下载 相关 举报
第10章-综合应用设计Java版-课件_第1页
第1页 / 共59页
第10章-综合应用设计Java版-课件_第2页
第2页 / 共59页
第10章-综合应用设计Java版-课件_第3页
第3页 / 共59页
点击查看更多>>
资源描述
第第10章章 综合应用设计综合应用设计l10.1 数组和集合数组和集合l10.2 实现迭代器实现迭代器 l10.3 算法设计策略算法设计策略l10.4 课程设计的目的、要求和选题课程设计的目的、要求和选题数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)目的目的l目的:目的:综合运用数据结构课程所讨论的基综合运用数据结构课程所讨论的基 础知识和基本理论,解决具有一定础知识和基本理论,解决具有一定 规模的、中等难度的实际应用问规模的、中等难度的实际应用问 题,培养综合应用设计能力。题,培养综合应用设计能力。l内容:内容:Java集合框架;多种算法设计策集合框架;多种算法设计策 略。略。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.1 数组和集合数组和集合10.1.1 Arrays数组类数组类(1)比较两个数组是否相等比较两个数组是否相等public static boolean equals(Object a,Object b)(2)填充填充public static void fill(Object a,Object obj)public static void fill(long a,int begin,int end,long value)数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.1.1 Arrays数组类数组类(3)排序排序public static void sort(Object a)public static void sort(T a,Comparator c)(4)二分法查找二分法查找public static int binarySearch(Object a,int begin,int end,Object key)public static int binarySearch(T a,T key,Comparator c)数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)java.util.Comparator比较器比较器接口接口public interface Comparator int compare(T cobj1,T cobj2);/指定比较两个对象大小的规则指定比较两个对象大小的规则数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.1.2 Java集合框架集合框架1.集合框架结构集合框架结构 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)表表10-1集合框架中的主要接口和类集合框架中的主要接口和类 接接 口口实现接口的类实现接口的类一维数组一维数组循环双链表循环双链表平衡二叉树平衡二叉树散列表散列表Set集合集合TreeSetHashSetList列表列表ArrayListLinkedListMap映射映射TreeMapHashMap数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)2.迭代迭代(1)java.util.Iterator和和ListIterator迭代器接口迭代器接口public interface Iterator /迭代器接口迭代器接口 boolean hasNext();/判断是否有后继元素判断是否有后继元素 T next();/返回后继元素返回后继元素 void remove();/删除迭代器对象表示的集合当前元素删除迭代器对象表示的集合当前元素数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)java.util.ListIterator列表迭代器列表迭代器接口接口 public interface ListIterator extends Iterator boolean hasPrevious();/判断是否有前驱元素判断是否有前驱元素 T previous();/返回前驱元素返回前驱元素 int nextIndex();/返回后继元素序号返回后继元素序号 int previousIndex();/返回前驱元素序号返回前驱元素序号 void set(T x);/将集合当前元素替换为将集合当前元素替换为x void add(T x);/增加元素增加元素x数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(2)java.lang.Iterable可迭代可迭代接口接口public interface Iterable Iterator iterator();数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)3.Collection接口接口 public interface Collection extends Iterable Iterator iterator();/获得迭代器获得迭代器 boolean isEmpty();/判断集合是否为空判断集合是否为空 int size();/返回集合的元素个数返回集合的元素个数 boolean contains(Object obj);/判断是否包含指定元素判断是否包含指定元素 boolean add(T element);/增加指定元素增加指定元素 boolean remove(Object obj);/移去首次出现指定元素移去首次出现指定元素 void clear();/移去所有元素移去所有元素 /以下方法描述集合运算,参数是另一个集合以下方法描述集合运算,参数是另一个集合 boolean equals(Object obj);/比较两个集合是否相等比较两个集合是否相等 boolean containsAll(Collection c);/判断集合包含判断集合包含 boolean addAll(Collection c);/集合并集合并 boolean removeAll(Collection c);/集合差集合差 boolean retainAll(Collection c);/仅保留那些也包含在集合仅保留那些也包含在集合c中的元素中的元素数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)4.列表列表(1)List接口接口public interface List extends Collection T get(int i)/返回第返回第i(i0)个元素)个元素 T set(int i,T x)/用用x替换原第替换原第i个元素个元素 ListIterator listIterator()/返回列表迭代器对象返回列表迭代器对象(2)ArrayList类类(3)LinkedList类类 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)5.Collections类类 public class Collections public static T max(Collection coll,Comparator c)/最大值最大值 public static T min(Collection coll,Comparator c)/最小值最小值 public static int binarySearch(List?extends Comparable list,T key)public static void sort(List list,Comparator c)/排序排序数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)【例【例10.1】电话簿。电话簿。1.Friend类表示电话簿对象,实现可比较、类表示电话簿对象,实现可比较、比较器和序列化接口。比较器和序列化接口。2.TelephoneBookTreeSet类实现电话簿类实现电话簿的存储和管理。的存储和管理。3.TelephoneBookJFrame类实现电话簿的类实现电话簿的图形用户界面,提供添加、查找和删除功图形用户界面,提供添加、查找和删除功能。能。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)电话簿管理窗口中两个分割窗电话簿管理窗口中两个分割窗格的布局层次格的布局层次 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.2 实现迭代器实现迭代器 10.2.1 基于迭代器的操作基于迭代器的操作10.2.2 提供迭代器对象提供迭代器对象数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.2.1 基于迭代器的操作基于迭代器的操作1.抽象集合类抽象集合类public abstract class AbstractCCollection implements Iterable public abstract java.util.Iterator iterator();public String toString()java.util.Iterator it=this.iterator();String str=(;while(it.hasNext()/若有后继元素若有后继元素 str+=it.next().toString();/添加后继元素字符串添加后继元素字符串 if(it.hasNext()str+=,;return str+);数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)2.抽象列表类抽象列表类 public abstract class AbstractLList extends AbstractCCollection public boolean equals(Object obj)if(obj=this)return true;if(!(obj instanceof AbstractLList)return false;java.util.Iterator it1=this.iterator();java.util.Iterator it2=(AbstractLList)obj).iterator();while(it1.hasNext()&it2.hasNext()if(!(it1.next().equals(it2.next()return false;return!it1.hasNext()&!it2.hasNext();数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.2.2 提供迭代器对象提供迭代器对象1.顺序表类提供迭代器对象顺序表类提供迭代器对象 public class SeqList extends AbstractLList implements LList public java.util.Iterator iterator()/返回返回Java迭代器对象迭代器对象 return new SeqIterator();private class SeqIterator implements java.util.Iterator /私有内部类,实现迭代器接口私有内部类,实现迭代器接口 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)2.单链表类提供迭代器对象单链表类提供迭代器对象 public class SinglyLinkedList extends AbstractLList implements LList public java.util.Iterator iterator()/返回返回Java迭代器对象迭代器对象 return new SinglyIterator();private class SinglyIterator implements java.util.Iterator/私有内部类,实现迭代器接口私有内部类,实现迭代器接口 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)本书线性表接口和类的层次关系本书线性表接口和类的层次关系 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.3 算法设计策略算法设计策略10.3.1 分治法分治法10.3.2 动态规划法动态规划法10.3.3 贪心法贪心法10.3.4 回溯法回溯法数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.3.1 分治法分治法1.分治策略分治策略分治法(分治法(divide and conquer)采用分而治之、逐个解)采用分而治之、逐个解决的策略。孙子兵法曰决的策略。孙子兵法曰“凡治众如治寡,分数是也。凡治众如治寡,分数是也。”2.分治与递归分治与递归 结果结果 求解问题(问题规模)求解问题(问题规模)if(问题规模足够小)(问题规模足够小)/递归边界条件递归边界条件 求解小规模子问题;求解小规模子问题;else 分解,求解问题(问题规模缩小);分解,求解问题(问题规模缩小);/递归调用递归调用 return 各子问题合并后的解;各子问题合并后的解;3.分治法的效率分析分治法的效率分析 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)深度优先搜索遍历二叉树、树和图,以及折半深度优先搜索遍历二叉树、树和图,以及折半查找、快速排序都是采用分治策略的算法。查找、快速排序都是采用分治策略的算法。void 遍历(问题规模)遍历(问题规模)if(问题规模(问题规模1)/继续递归继续递归 访问当前元素;访问当前元素;while(存在子问题)(存在子问题)/分解成若干子问题分解成若干子问题 遍历(子问题规模);遍历(子问题规模);/递归调用递归调用 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.3.2 动态规划法动态规划法1.动态规划动态规划 动态规划法(动态规划法(dynamic programming)也是把)也是把一个大问题分解为若干较小的子问题,通过一个大问题分解为若干较小的子问题,通过求解子问题而得到原问题的解。动态规划法求解子问题而得到原问题的解。动态规划法采用备忘录做法。采用备忘录做法。2.动态规划法的基本要素动态规划法的基本要素 最优子结构最优子结构 子问题重叠子问题重叠 n数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)【例【例10.2】动态规划法求组合数。动态规划法求组合数。nn m01234511121213133141464151510 1051数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.3.3 贪心法贪心法63.6元元=10元元6+1元元3+0.1元元6/15张张63.6=50+10+2+1+0.5+0.1 /6张(个)张(个)1.贪心选择策略贪心选择策略 贪心法(贪心法(greedy)是运用局部最优选择以期获得)是运用局部最优选择以期获得全局最优解的一种策略。全局最优解的一种策略。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)【例例10.3】贪心法求解背包问题。贪心法求解背包问题。给定给定n个物品和一个背包,物品个物品和一个背包,物品i的重量为的重量为wi,价值为价值为pi,背包能容纳物品总重量为,背包能容纳物品总重量为W;设;设xi(0 xi 1)表示物品)表示物品i的几分之几,求如何的几分之几,求如何选择装入背包的物品(全部或部分),使背包选择装入背包的物品(全部或部分),使背包中物品总价值中物品总价值 最大。最大。背包问题的约束条件为背包问题的约束条件为 W,满足约束,满足约束条件的条件的n元组元组 是一个可用解,使是一个可用解,使最大的可用解最大的可用解 是最优解。是最优解。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)表表10-2 背包问题的多个可用解背包问题的多个可用解 n=3,物品,物品 序列为序列为(80,20),(50,25),(15,45),W=100。方方案案可用解可用解 背包重量背包重量 背包价值背包价值 1(1,20/50,0)80+20=10020+25*2/5=302(1,5/50,1)80+5=15=10020+25*5/50+45=67.53(50/80,1,0)50+50=10020*50/80+25=37.54(35/80,1,1)35+50+15=10020*35/80+25+45=78.75数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.3.3 贪心法贪心法2.贪心法的基本要素贪心法的基本要素 贪心选择性质贪心选择性质 最优子结构性质最优子结构性质 3.贪心法与动态规划法的区别贪心法与动态规划法的区别 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)4.最小堆最小堆 贪心选择策略最简单的应用是求最小值。贪心选择策略最简单的应用是求最小值。public class MinHeapT extends java.lang.Comparable/最小堆类最小堆类 Comparable element;/最小堆元素数组最小堆元素数组 int len;/最小堆元素个数最小堆元素个数 Comparator comparator=null;/比较器比较器数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)图图10-6 最小堆插入和删除元素最小堆插入和删除元素 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)5.贪心策略应用贪心策略应用 Prim算法算法 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)Dijkstra算法采用贪心算法采用贪心 选择策略逐步扩充顶选择策略逐步扩充顶点点A的单源最短路径的单源最短路径 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)Huffman算法采用贪心选择策略算法采用贪心选择策略逐步合并森林构造逐步合并森林构造Huffman树树 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)6.Kruskal算法实现算法实现 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(1)最小生成树类)最小生成树类 public class MinSpanTree Edge mst;/边集合边集合 int cost=0;/代价代价 public MinSpanTree(int n,Edge edges,Comparator comparator)MinHeap minheap=new MinHeap(edges,comparator);数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)例例10.4 以以Kruskal算法构造带算法构造带权无向图的最小生成树。权无向图的最小生成树。图图10-10的所有边按权值构造的最小堆的所有边按权值构造的最小堆 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(2)并查集类)并查集类 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(2)并查集类)并查集类数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)图图10-13 查找集合元素时采用查找集合元素时采用折叠规则压缩路径折叠规则压缩路径 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.3.4 回溯法回溯法回溯法(回溯法(backtracking)在问题的解空间)在问题的解空间中,以深度优先策略搜索满足约束条件的一个解中,以深度优先策略搜索满足约束条件的一个解或所有解。二叉树、树和图的深度优先搜索遍历或所有解。二叉树、树和图的深度优先搜索遍历算法采用的是回溯法。算法采用的是回溯法。用回溯法解题通常包含以下三个步骤:用回溯法解题通常包含以下三个步骤:定义所求问题的解空间。定义所求问题的解空间。构造易于搜索的解空间结构。构造易于搜索的解空间结构。以深度优先方式搜索解空间,并在搜索过以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。程中用剪枝函数避免无效搜索。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)1.问题的解空间及解空间树问题的解空间及解空间树0-1背包问题(背包问题(n=3)解空间是)解空间是(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)图图10-14 0-1背包问题的解空间二叉树背包问题的解空间二叉树 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)图图10-15 穷举法求解穷举法求解0-1背包问题背包问题 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)2.约束集的完备性约束集的完备性 若一个若一个i(1in)元组)元组 违反涉及到违反涉及到 元素的一个约元素的一个约束条件,则以束条件,则以 为前缀的任为前缀的任何何n元组元组 一定也违反相一定也违反相应的约束条件。应的约束条件。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)3.回溯策略回溯策略 1.深度优先搜索深度优先搜索 2.剪枝:约束剪枝,限界剪枝剪枝:约束剪枝,限界剪枝 3.递归回溯与迭代回溯递归回溯与迭代回溯 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)0-1背包问题按背包重量的约束背包问题按背包重量的约束剪枝剪枝 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)0-1背包问题按背包重量的限背包问题按背包重量的限界剪枝界剪枝数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)例例10.5 回溯法求解回溯法求解0-1背包问题。背包问题。n物品按重量降序排列物品按重量降序排列n物品按单位重量价值降序排列物品按单位重量价值降序排列图图10-18 0-1背包问题物品按单位重量价值降序排列的解空间树背包问题物品按单位重量价值降序排列的解空间树 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)【例例10.6】回溯法求解八皇后问题。回溯法求解八皇后问题。八皇后问题的解空间八皇后问题的解空间 1.八皇后问题的显约束是八皇后问题的显约束是 (0i7),解空间由),解空间由 个个8元组构成,范围是元组构成,范围是(0,0,0,0,0,0,0,0)(7,7,7,7,7,7,7,7),解空间树是,解空间树是一棵满八叉树。隐约束是任意两个皇后不在同一列或同一棵满八叉树。隐约束是任意两个皇后不在同一列或同一斜线上。一斜线上。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)用回溯法求解四皇后问题的用回溯法求解四皇后问题的解空间树解空间树数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)判断隐约束条件判断隐约束条件n任意两个皇后不在同一列上。若任意两个皇后不在同一列上。若ij,有,有 。意为元素各不相同,确定。意为元素各不相同,确定(0,0,?,?)等不等不是解。是解。n任意两个皇后不在同一斜线上。若任意两个皇后不在同一斜线上。若ij,有,有 。由此约束确定。由此约束确定(0,1,?,?)、(0,2,1,?)、(0,3,1,0)等不是解。等不是解。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)1.用回溯法求解八皇后问题程序用回溯法求解八皇后问题程序 2.迭代回溯迭代回溯数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)【例例10.7】预见算法解骑士游历问题。预见算法解骑士游历问题。1.骑士游历问题的解空骑士游历问题的解空间间 一次不成功游历路径一次不成功游历路径 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)预见算法预见算法 方向方向下一位置下一位置可通方向可通方向可通路数可通路数1(2,4)1,2,3,4,6,7,872(3,5)1,2,3,4,5,7,873(5,5)1,2,3,4,5,6,874(6,4)1,2,3,6,755(6,2)2,3,6,7,856(5,1)1,3,4,5,857(3,1)1,2,4,5,858(2,2)1,2,3,5,6,7,87数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)骑士游历算法流程骑士游历算法流程 数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)10.4 课程设计的目的、要课程设计的目的、要求和选题求和选题数据结构课程设计的数据结构课程设计的目的目的是,深入理解数据是,深入理解数据结构的基本理论,掌握对数据结构各种操作的结构的基本理论,掌握对数据结构各种操作的算法设计方法,增强对基础知识和基本方法的算法设计方法,增强对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高综合运用能力,增强对算法的理解能力,提高软件设计能力,在实践中培养独立分析问题和软件设计能力,在实践中培养独立分析问题和解决问题的作风和能力。解决问题的作风和能力。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)数据结构课程设计的要求数据结构课程设计的要求综合运用数据结构的基础知识和算法设计的综合运用数据结构的基础知识和算法设计的基本原则,独立编制一个具有中等规模的、一基本原则,独立编制一个具有中等规模的、一定难度的、解决实际问题的应用程序;通过题定难度的、解决实际问题的应用程序;通过题意分析、选择数据结构、算法设计、编制程序、意分析、选择数据结构、算法设计、编制程序、调试程序、软件测试、结果分析、撰写课程设调试程序、软件测试、结果分析、撰写课程设计报告等环节完成软件设计的全过程,完善算计报告等环节完成软件设计的全过程,完善算法并提高程序性能。法并提高程序性能。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)具体要求具体要求 选题与数据结构课程内容相关,体现基本的数据选题与数据结构课程内容相关,体现基本的数据结构和算法设计原则。结构和算法设计原则。算法有明确的思路,模块结构合理,表述清楚,算法有明确的思路,模块结构合理,表述清楚,算法完整,考虑各种可能情况。算法完整,考虑各种可能情况。采用采用Java语言和面向对象程序设计思想实现。语言和面向对象程序设计思想实现。程序必须运行通过,对于各种输入数据,有明确程序必须运行通过,对于各种输入数据,有明确的不同的输出结果。程序运行有错误时,必须采的不同的输出结果。程序运行有错误时,必须采取各种调试手段排除错误。取各种调试手段排除错误。数据结构(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)(Java版)(第3版)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!