数据结构学习难点讲解

合集下载

数据结构与算法学习难点剖析

数据结构与算法学习难点剖析

数据结构与算法学习难点剖析数据结构与算法是计算机科学中最基础、最重要的领域之一。

它们在软件开发和编程领域中扮演着至关重要的角色。

然而,对于刚刚入门的学习者来说,数据结构与算法往往是一座高山,存在着许多难点需要克服。

本文将剖析数据结构与算法学习的难点,并提供一些解决的建议。

一、抽象概念的理解数据结构与算法的学习涉及到许多抽象的概念,例如链表、栈、队列、图和树等。

对于初学者来说,这些抽象概念可能比较难以理解和掌握。

为了解决这个问题,建议学习者采取以下几种策略:1.学习资源选择:选择一本易于理解的教材或参考资料,并结合具体的案例进行学习。

同时,互联网上也有许多优质的教学视频和博客等资源,可以作为辅助学习的工具。

2.实际操作:理论学习与实际操作相结合,可以加深对数据结构与算法的理解。

可以通过编写代码来实现具体的数据结构,或者通过编程题目来应用所学的算法。

3.学习小组合作:与其他学习者组成学习小组,互相讨论和分享学习心得。

通过互相解答问题和思考,能够更好地理解和掌握数据结构与算法的抽象概念。

二、算法的效率分析和优化在学习算法时,除了理解和掌握算法的概念,还需要学习如何分析和优化算法的效率。

这一点对于初学者来说可能是一个挑战。

为了提高算法的效率分析和优化能力,可以采取以下措施:1.学习时间复杂度和空间复杂度的概念:时间复杂度和空间复杂度是衡量算法效率的重要指标,学习者需要理解它们的定义和计算方法。

2.练习算法实例分析:选择一些经典的算法实例进行分析和理解。

通过阅读相关的算法实现代码,结合具体的输入数据,可以更好地理解算法的执行过程和效果。

3.进行算法优化:通过改进算法的设计和实现,提高算法的执行效率。

可以采用一些常用的算法优化技巧,如减少循环次数、使用适当的数据结构等。

三、问题解决思路的培养在数据结构与算法学习过程中,遇到问题并解决问题是提升能力的关键。

然而,初学者常常面临解决问题的困惑。

为了培养问题解决思路,可以采取以下方法:1.分解问题:将一个复杂的问题分解成若干个简单的子问题,逐个解决,最后合并得到最终结果。

数据结构重难点总结

数据结构重难点总结

数据结构重难点总结数据结构是计算机科学领域中非常重要的一门基础课程,它涉及到如何组织和存储数据以便有效地访问和操作。

在学习数据结构的过程中,我们会遇到一些重难点,本文将对这些重难点进行总结和分析。

一、线性结构和非线性结构的区别与应用场景数据结构可以分为线性结构和非线性结构。

线性结构包括数组、链表、队列和栈,这些结构中的数据元素之间存在一对一的关系。

非线性结构主要指树和图,其中树是一种层次化的结构,图则是由节点和边组成的集合。

线性结构的应用场景包括按顺序存储数据、实现队列和栈等。

非线性结构的应用场景则包括存储具有层次关系的数据,如文件系统的目录结构、组织结构等。

二、数组和链表的比较与选择数组和链表是线性结构中最基本的两种数据结构,它们在存储和操作上存在一些重要的区别。

数组是一种连续的存储结构,它可以通过索引直接访问任意位置的元素,因此在插入和删除元素时需要移动其他元素。

链表则是一种离散的存储结构,它通过指针将元素按照一定顺序连接起来,插入和删除操作只需要修改指针的指向。

选择使用数组还是链表主要取决于具体的应用场景。

如果需要频繁地进行插入和删除操作,那么链表的效率更高。

而如果需要频繁地进行随机访问操作,那么数组更为适合。

三、栈和队列的实现与应用栈和队列是两种常见的数据结构,它们在许多实际应用中都起到了重要的作用。

栈是一种后进先出(Last In First Out,简称LIFO)的结构,它主要包括压栈和出栈两个操作。

栈的应用场景包括表达式求值、函数调用、浏览器的前进和后退等。

队列是一种先进先出(First In First Out,简称FIFO)的结构,它主要包括入队和出队两个操作。

队列的应用场景包括任务调度、消息传递、缓存等。

四、树的遍历算法与应用树是一种非线性结构,它有许多重要的遍历算法,包括先序遍历、中序遍历和后序遍历。

先序遍历指先访问根节点,然后按照先序遍历的方式访问左子树和右子树。

中序遍历指先按照中序遍历的方式访问左子树,然后访问根节点,最后访问右子树。

数据结构重点难点

数据结构重点难点

数据结构重点难点数据结构是计算机科学中非常重要的一门基础课程,它为我们理解和应用计算机中的数据提供了基础。

然而,由于其抽象性和概念性较强,学习数据结构往往是许多学生的一个挑战。

本文将介绍数据结构的几个重点难点,帮助读者更好地理解和掌握这门学科。

一、数组和链表数组和链表是数据结构中最基本的两种形式。

数组是一种连续的存储结构,可以通过索引访问元素,而链表是一种非连续的存储结构,每个节点都包含一个元素和一个指向下一个节点的指针。

数组的插入和删除操作比较麻烦,而链表的访问操作比较耗时。

在实际应用中,需要根据具体的场景选择数组还是链表。

二、栈和队列栈和队列是经常用到的数据结构。

栈是一种后进先出(LIFO)的结构,只允许在栈顶进行插入和删除操作,类似于堆叠盘子。

而队列是一种先进先出(FIFO)的结构,允许在队尾进行插入操作,在队头进行删除操作,类似于排队。

在实际应用中,栈和队列经常用于解决问题的算法设计。

三、树和二叉树树是一种非线性的数据结构,它由节点和边组成。

树的一个节点可以有多个子节点,而每个节点都有一个父节点,除了根节点外。

特殊的一种树结构是二叉树,它每个节点最多有两个子节点。

树和二叉树在很多应用中被广泛使用,如文件系统、数据库索引等。

四、图图是由节点和边构成的非线性数据结构,它可以用来表示复杂的关系和网络。

图由顶点集合和边集合组成,顶点表示图中的元素,边表示顶点之间的关系。

图可以是有向的或无向的,带权重的或不带权重的。

图的遍历算法和最短路径算法是图的重点难点,它们在图的应用中具有重要的作用。

五、排序和查找算法排序和查找是数据结构中常用的操作。

排序算法的目的是将一个无序的数据序列按照一定的规则进行整理,使其按照升序或降序排列。

常见的排序算法有冒泡排序、插入排序、选择排序、快速排序等。

查找算法的目的是在一个有序的数据序列中寻找指定的元素,常见的查找算法有顺序查找、二分查找、哈希查找等。

综上所述,数据结构是计算机科学中非常重要的一门课程,也是许多学生的挑战。

数据结构与算法学习难点详解

数据结构与算法学习难点详解

数据结构与算法学习难点详解数据结构与算法是计算机科学的基础课程,也是计算机编程中最重要的核心知识之一。

掌握好数据结构与算法是每个程序员的必备技能。

然而,很多人在学习数据结构与算法的过程中会遇到一些难点。

本文将详细解析数据结构与算法学习的难点,并提供一些解决方法。

一、数据结构难点解析1. 抽象性数据结构是一种抽象的概念,它与具体的编程语言无关。

在学习数据结构时,我们需要从抽象的层面去理解和运用它们,这对于初学者来说可能是一个挑战。

2. 多样性数据结构有很多种类,如数组、链表、栈、队列、树、图等。

每种数据结构都有其特点和适用场景,初学者可能会感到困惑,不知道该如何选择和使用合适的数据结构。

3. 理论与实践结合学习数据结构既需要理解其原理和概念,又需要通过实际编程来巩固和应用所学知识。

很多初学者可能只停留在理论层面,缺乏实践经验,导致理解不深入或者无法将知识转化为实际问题的解决方法。

二、算法难点解析1. 思维转变算法是解决问题的方法和步骤的描述。

学习算法需要进行思维的转变,从具体的问题出发,通过抽象和归纳总结出通用的解决方法。

这对于一些刚刚接触算法的学习者来说可能是一个挑战。

2. 时间与空间复杂度分析算法不仅要解决问题,还要具备高效性。

在学习算法时,我们需要学会分析算法的时间复杂度和空间复杂度,评估算法的执行效率。

然而,这对于一些初学者来说可能是一个较为困难的任务。

3. 解决复杂问题算法可以解决各种复杂的问题,如排序、查找、图论等。

学习算法需要理解多种算法的原理和运行机制,并能够灵活运用到实际问题中。

这对于一些初学者来说可能需要较长时间的积累和实践。

三、数据结构与算法学习的解决方法1. 理论与实践相结合在学习数据结构与算法时,可以通过大量的练习和实践来加深理解和巩固所学知识。

可以使用各种编程语言实现不同的数据结构和算法,例如使用Python、C++等语言进行编程实践。

2. 多种学习资源可以利用各种学习资源,如教材、网上课程、开源项目等来辅助学习。

[整理版]数据结构的重点和难点

[整理版]数据结构的重点和难点

数据结构的重点和难点精品文档!!!欢迎下载大家下载阅读!!!!数据结构的重点和难点1)课程的重点:(1) 数据结构的逻辑结构、存储结构以及基本操作的概念及相互关系,抽象数据类型(ATD)的概念和实现方法,算法的时间复杂性和空间复杂性分析。

(2) 线性表ADT顺序存储实现中的创建、查找、插入和删除等基本操作及相关算法,线性表ADT链式存储实现中单链表、循环链表和双向链表的创建、查找、插入和删除等基本操作及相关算法。

(3) 栈、队列的定义、特点、性质和应用,ADT栈、ADT队列设计实现中的基本操作及相关算法。

(4) ADT串的设计、实现方法和基本操作;②串的朴素模式匹配算法,KMP算法。

(5) 数组的存储表示方法,顺序存储数组时数据元素之间的地址关系,特殊矩阵的压缩存储方法,稀疏矩阵的压缩存储方法,广义表的定义、性质和存储结构。

(6) 二叉树的定义、结构特点和性质,ADT二叉树的设计和实现,二叉树存储结构的特点,先序、中序、后序遍历的递归和非递归算法,二叉树的线索化过程和算法,最优二叉树的特性及建立最优二叉树的算法,哈夫曼编码的算法。

(7) 图的定义、术语、结构特点和性质,ADT图的设计和实现,图的邻接矩阵、邻接表的存储结构及其构造方法,图的深度优先搜索和广度优先搜索算法,连通图的最小生成树算法,有向无环图的拓扑排序算法、关键路径的算法,最短路径求解中的Dijkstra算法和Floyed算法。

(8) 顺序表和有序表的查找算法,二叉排序树的构造方法和查找算法,哈希表的构造方法和查找算法,各种查找算法的应用背景、优缺点和时间复杂性分析。

(9) 简单插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序、基数排序算法,各种排序算法的特点、时间复杂性、空间复杂性和稳定性分析。

2)课程的难点:(1) 抽象数据类型(ATD)的概念和实现方法,算法的时间复杂性和空间复杂性分析。

(2) 线性表ADT链式存储实现中的某些操作。

数据结构与算法学习难点详解

数据结构与算法学习难点详解

数据结构与算法学习难点详解数据结构与算法是计算机科学中非常重要的基础知识,对于程序员而言,掌握好数据结构与算法的理论和实践,是提升编程能力和解决实际问题的关键。

然而,由于数据结构与算法本身的复杂性和抽象性,学习过程中常常会遇到一些难点。

本文将就这些难点进行详解,并提供相应的解决方法。

一、抽象思维数据结构与算法的学习涉及到很多抽象的概念和思维方式,在初学阶段很容易让人感到困惑。

比如,在学习树这种数据结构时,常常需要理解递归的概念和思想,这对于一些初学者来说是一种挑战。

解决这个问题的方法是多进行实际编程练习,通过编写代码来加深对于抽象概念的理解和掌握。

二、时间与空间复杂度分析在学习算法过程中,一项重要的任务就是分析算法的时间复杂度和空间复杂度。

但是,对于一些复杂的算法,很难准确地进行分析。

这也是学习数据结构与算法的一个难点。

针对这个问题,可以通过参考算法导论等经典教材,学习和掌握常见的时间复杂度和空间复杂度分析方法,并在实践中不断尝试。

三、问题抽象与模型建立在解决实际问题时,往往需要将问题进行抽象,建立相应的模型。

这个过程对于一些学习者来说也是一种难点。

解决这个问题的方法是多进行实践,尝试解决不同类型的问题,并在解决问题的过程中不断探索和积累经验。

四、算法的选择与优化在实际编程中,常常需要根据具体问题选择合适的算法,并进行相应的优化。

但是,对于一些复杂的问题,很难准确地选择最优算法和进行高效优化。

解决这个问题可以从以下几个方面着手:多学习和掌握不同类型的算法,了解它们的特点和适用场景;进行多种算法的比较和实际测试,从中找到最优算法;学习和掌握常用的算法优化方法,如贪心算法、动态规划等。

五、实践与理论结合数据结构与算法的学习不仅仅是理论知识的学习,更需要通过实践进行巩固和应用。

但是很多学习者在实践过程中容易陷入“只写代码,不进行思考”的陷阱。

为了克服这个问题,需要在实践过程中注重问题分析和解决思路的整理,并进行总结和归纳。

《数据结构》教学中的遇到的问题和解决措施

《数据结构》教学中的遇到的问题和解决措施

《数据结构》教学中的遇到的问题和解决措施数据结构作为计算机科学的重要基础课程,对于计算机专业的学生来说是必修课程之一。

在教学过程中,教师和学生都会遇到一些问题,需要寻找解决措施来提高教学效果。

本文将探讨在《数据结构》教学中常见的问题,并提出解决措施。

一、学生对数据结构概念的理解不深在《数据结构》教学中,学生常常面临对数据结构概念的理解不够深刻的问题。

这些概念包括栈、队列、链表、树等。

学生往往只是记住了一些表面知识,对各种数据结构的实质和应用理解不够透彻。

解决措施:1. 强调理论与实践相结合教师可以通过案例分析和实际应用来深入讲解数据结构的概念和原理。

通过让学生亲自动手编写代码实现各种数据结构,加强他们的理论学习和实际操作,从而提高对数据结构概念的理解。

2. 建立概念图谱在教学过程中,可以建立概念图谱,对各种数据结构的概念、特点、应用进行系统整理和分类,帮助学生更清晰地理解数据结构的内涵和外延,加深对数据结构的认识。

3. 提倡学生多思考、多讨论鼓励学生提出自己对数据结构理解的问题,让学生多思考、多讨论,相互之间提出不同的看法和解释,从而深入理解数据结构的内在含义。

二、学生在数据结构算法设计和分析中的困难数据结构与算法设计是《数据结构》课程的核心内容,但学生在这方面常常感到困难。

他们难以理解复杂的算法设计思想,也不擅长进行算法的分析和评估。

解决措施:1. 强化算法设计的基本思想在教学中,要突出强调算法设计的基本思想,如贪心算法、动态规划、分治算法等,让学生理解不同算法思想的应用场景和优劣势,从而提高他们的算法设计能力。

2. 培养算法分析的能力教师可以通过大量的案例分析和练习,引导学生学会对算法的时间复杂度和空间复杂度进行分析和评估,让学生掌握对算法进行科学评价的方法和技巧。

3. 提供实际应用的案例通过实际应用的案例,让学生了解真实生活中各种算法设计的应用场景,激发学生对算法设计的兴趣,从而加强对算法设计的理解和掌握。

数据结构与算法学习难点解析

数据结构与算法学习难点解析

数据结构与算法学习难点解析数据结构和算法是计算机科学的核心基础,对于每个学习或从事计算机相关专业的人来说,都是必须掌握的重要内容。

然而,由于其抽象性和复杂性,很多人在学习数据结构和算法时面临各种难点和挑战。

本文将分析并解析常见的数据结构与算法学习难点,帮助读者更好地理解和掌握这一领域。

一、抽象性难以理解数据结构和算法在一定程度上都是抽象的概念,需要读者有一定的数学基础和抽象思维能力才能够理解。

对于初学者来说,很多时候并不能直观地理解这些概念。

例如,图论中的图和树结构,链表和数组等。

这些概念需要通过实例和具体的案例来帮助理解。

为了解决这个问题,我们可以采用实际的例子来说明抽象的概念。

比如,可以用一个班级的学生作为例子来解释树结构,用一条链表上的节点来解释链表等。

通过具体的案例和图示来讲解,可以帮助学习者更好地理解和记忆这些抽象的概念。

二、复杂度分析困难在学习数据结构和算法时,我们经常需要对算法的时间复杂度和空间复杂度进行分析。

然而,复杂度的计算和分析对于很多学习者来说是一项挑战。

这需要对算法的执行过程和资源消耗进行深入的理解。

为了解决这个问题,我们可以通过实际的例子和计算机模拟来帮助学习者更好地理解复杂度的计算和分析。

比如,可以通过编写代码并运行来观察算法的执行时间和内存消耗,帮助学习者亲自体验和理解。

三、思维方式的转变数据结构和算法的学习需要学习者具备一种抽象思维和逻辑思维的能力。

这对于很多人来说是一种挑战。

在实际问题中应用抽象的数据结构和算法需要学习者转变思维方式,从以往的具体问题解决转变为抽象问题解决。

为了解决这个问题,我们可以通过大量的练习题和实际问题来锻炼学习者的抽象思维和逻辑思维能力。

提供一些常见的实际问题,并引导学习者将其转化为抽象问题,再应用相应的数据结构和算法进行解决。

通过刻意练习和反复实践,学习者可以逐渐转变思维方式。

四、实际应用困难学习数据结构和算法往往需要和实际应用相结合,才能更好地理解和掌握。

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

数据结构学习难点讲解
数据结构复习
本章的重点是了解数据结构的逻辑结构、存储结构、数据的运算三方面的概念及相互关系,难点是算法复杂度的分析方法。

需要达到<识记>层次的基本概念和术语有:数据、数据元素、数据项、数据结构。

特别是数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。

数据结构的两大类逻辑结构和四种常用的存储表示方法。

需要达到<领会>层次的内容有算法、算法的时间复杂度和空间复杂度、最坏的和平均时间复杂度等概念,算法描述和算法分析的方法、对一般的算法要能分析出时间复杂度。

--------------------------------------------------------------------------------
对于基本概念,仔细看书就能够理解,这里简单提一下:
数据就是指能够被计算机识别、存储和加工处理的信息的载体。

数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。

数据项是具有独立含义的最小标识单位。

如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。

数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。

这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。

比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。

那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。

而存储结构则是指用计算机语言如何表示结点之间的这种关系。

如上面的表,在计算机语言中描述为连续存放在一片内存单元中,还是随机的存放在内存中再用指针把它们链接在一起,这两种表示法就成为两种不同的存储结构。

(注意,在本课程里,我们只在高级语言的层次上讨论存储结构。

)
第三个概念就是对数据的运算,比如一张表格,我们需要进行查找,增加,修改,删除记录等工作,而怎么样才能进行这样的操作呢? 这也就是数据的运算,它不仅仅是加减乘除这些算术运算了,在数据结构中,这些运算常常涉及算法问题。

弄清了以上三个问题,就可以弄清数据结构这个概念。

--------------------------------------------------------------------------------
通常我们就将数据的逻辑结构简称为数据结构,数据的逻辑结构分两大类:线性结构和非线性结构(这两个很容易理解)
数据的存储方法有四种:顺序存储方法、链接存储方法、索引存储方法和散列存储方法。

--------------------------------------------------------------------------------
下一个是难点问题,就是算法的描述和分析,主要是算法复杂度的分析方法及其运用。

首先了解一下几个概念。

一个是时间复杂度,一个是渐近时间复杂度。

前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。

当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n)简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。

此外,算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。

但是我们总是考虑在最坏的情况下的时间复杂度。

以保证算法的运行时间不会比它更长。

常见的时间复杂度,按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、k次方阶O(n^k)、指数阶O(2^n)。

时间复杂度的分析计算请看书本上的例子,然后我们通过做练习加以领会和巩固。

数据结构习题一
--------------------------------------------------------------------------------
1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。

◆数据:指能够被计算机识别、存储和加工处理的信息载体。

◆数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。

数据元素有时可以由若干数据项组成。

◆数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

◆数据结构:指的是数据之间的相互关系,即数据的组织形式。

一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。

◆逻辑结构:指各数据元素之间的逻辑关系。

◆存储结构:就是数据的逻辑结构用计算机语言的实现。

◆线性结构:数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

线性表就是一个典型的线性结构。

◆非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。

--------------------------------------------------------------------------------
1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。

◆例如有一张学生成绩表,记录了一个班的学生各门课的成绩。

按学生的姓名为一行记成的表。

这个表就是一个数据结构。

每个记录(有姓名,学号,成绩等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。

这几个关系就确定了这个表的逻辑结构。

那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢? 是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。

(所以各位赶快学C语言吧)。

最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。

--------------------------------------------------------------------------------
1.3 常用的存储表示方法有哪几种?
常用的存储表示方法有四种:
◆顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。

由此得到的存储表示称为顺序存储结构。

◆链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。

由此得到的存储表示称为链式存储结构。

◆索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。

◆散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。

--------------------------------------------------------------------------------
1.4 设三个函数f,g,h分别为f(n)=100n^3+n^2+1000 , g(n)=25n^3+5000n^2 , h(n)=n^1.5+5000nlgn 请判断下列关系是否成立:
(1) f(n)=O(g(n))
(2) g(n)=O(f(n))
(3) h(n)=O(n^1.5)
(4) h(n)=O(nlgn)
◆(1)成立。

◇这里我们复习一下渐近时间复杂度的表示法T(n)=O(f(n)),这里的"O"是数学符号,它的严格定义是"若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0 ,使得当n≥n0时都满足0≤T(n)≤C·f(n)。

"用容易理解的话说就是这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数。

这么一来,就好计算了吧。

第(1)题中两个函数的最高次项都是n^3,因此当n→∞时,两个函数的比值是一个常数,所以这个关系式是成立的。

◆(2)成立。

◆(3)成立。

◆(4)不成立。

相关文档
最新文档