数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排。数据结构包括数组、链表、栈、二叉树、哈希表等等。算法对这些结构中的数据进行各种处理。例如,查找一条特殊的数据项或对数据进行排序。
掌握这些知识以后可以解决哪些问题呢?
现实世界数据存储
程序员的工具
建模
数据结构的特性:
数组:优点是插入快,如果知道下标,可以非常快地存取。缺点是查找慢,删除慢,大小固定。
有序数组:优点是比无序的数据查找快。缺点是删除和插入慢,大小固定。
栈:优点是提供后进先出方式的存取。缺点是存取其他项很慢。
队列:提供先进先出方式的存取。缺点是存取其他项很慢。
链表:优点是插入快,删除快。缺点是查找慢。
二叉树:优点是查找、插入、删除都快(如果树保持平衡)。缺点是删除算法复杂。
红-黑树:查找、插入、删除都快。树总是平衡的。缺点是算法复杂。
2-3-4树:优点是查找、插入、删除都快。树总是平衡的。类似的树对磁盘存储有用。缺点是算法复杂。
哈希表:优点是如果关键字已知则存取极快。插入快。缺点是删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分。
堆:优点是插入、删除快,对最大数据项的存取很快。缺点是对其他数据项存取慢。
图:优点是对现实世界建模。缺点是有些算法且复杂。
对于大多数数据结构来说,都需要知道如何插入一条新的数据项,如何寻找某一特定的数据项,如何删除某一特定的数据项,还需要知道如何迭代地访问某一数据结构中的各数据项,以便进行显示或其他操作。另一种重要的算法范畴是排序。
一、通用数据结构:数组,链表,树,哈希表
它们被称之为通用的数据结构是因为它们通过关键字的值来存储并查找数据,这一点在通用数据库程序中常见到(栈等特殊结构正好相反,它们只允许存取一定的数据项)。
通用数据结构可以完全按照速度的快慢来分类:
数组和链表是最慢的,树相对较快,哈希表是最快的。
但并不是使用最快的结构永远是最好的方案。这些最快的结构也有缺陷,首先,它们的程序在不同程度上比数组和链表的复杂;其次,哈希表要求预先知道要 存储多少数据,数据对存储空间的利用率也不是非常高。普通的二叉树对顺序的数据来说,会变成缓慢的O(N)级操作;而平衡树虽然避免了上述的问题,但是它 的程序编制起来却比较困难。
数组在下列情况下很有用:
数据量较小
数据量的大小事先可预测
如果存储空间足够大的话,可以放松第二条,创建一个足够大的数组来应付所有可以预见的数据输入。
如果插入速度很重要的话,使用无序数组。如果查找速度很重要的话,使用有序数组,并用二分查找。数组元素的删除总是很慢,这是由于为了填充空出来的单元,平均半数以上的数组元素要被移动。在有序数组中的遍历是很快的,而在无序的数组不支持这种功能。
向量(如Java中的向量类)是一种当数据太满时可以自己扩充空间的数组。向量可以应用于数据量不可预知的情况下。然而,在向量扩充时,要将旧的数据拷入一个新的空间中,这一过程会造成程序明显的周期性暂停。
如果需要存储的数据量不能预知或者需要频繁地插入删除数据元素时,考虑使用链表。当有新的元素加入时,链表就开辟新的所需要的空间,所以它甚至可以占满全部可用内存;在删除过程中没有必要像数组那样添补“空洞”。
二、专用数据结构:栈,队列,优先级队列
三、排序:插入排序,希尔排序,快速排序,归并排序,堆排序
四、图:邻接矩阵,邻接表
五、外部存储:顺序存储,索引文件,B-树,哈希方法
http://m.blog.csdn.net/article/details?id=10214981
相关推荐
通过理解不同数据结构的特点,我们可以根据实际需求选择合适的数据结构,从而提高程序的运行效率。此外,对于准备面试或从事软件开发的人来说,扎实的数据结构基础是必不可少的。因此,这些课件和资料对学习者来说是...
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中组织和管理数据,以便高效地进行存储、检索和处理。李春葆教授的数据结构课件及答案集合为学习者提供了一个深入理解这一主题的宝贵资源。清华大学出版...
该书通过丰富的代码示例,指导学习者如何在C语言环境下操作和应用各类数据结构。例如,对于树结构,学习者不仅能够学习到如何实现二叉树的遍历和平衡二叉树的调整,还能够理解树结构在诸如数据库索引等应用场景下的...
上述内容是对文档中提到的各类知识点的一个详细描述,由于原文档仅提供了部分内容和章节编号,因此未能对所有章节进行完整解读,但上述所提到的内容足以提供一个对“JAVA版数据结构.pdf”文档内容的概览。...
《数据结构》这门课程旨在教会学生如何设计、分析和实现各类数据结构以及相关算法,以解决实际问题。在学习数据结构的过程中,实验环节是帮助学生加深理解和掌握知识的重要手段。本文档将为读者详细阐述顺序表与...
这套试卷中包含各类数据结构知识点,从基础的概念到复杂的算法实现,对考察的数据结构知识点进行了全面覆盖。 知识点1:数据结构的基本概念 - 栈(Stack)和队列(Queue):这两种数据结构都属于线性表,但它们有...
数据结构的学习,不仅要求学生深入理解各类数据结构的特点与应用场景,还需要他们在实践中掌握算法设计与分析的技巧。作为广东工业大学计算机学院09级本科生数据结构教学的辅助材料,“anyview数据结构习题库”便是...
数据结构实验七:数组实验、稀疏矩阵运算 本实验主要目的是通过数组操作原理,掌握稀疏矩阵的简单运算,奠定灵活运用数组和稀疏矩阵的基础。实验内容包括实现一个能进行稀疏矩阵基本运算的运算器,使用三元组顺序表...
数据结构教程主要涵盖数据、数据元素、数据对象以及数据结构的定义与分类,同时详细介绍各类数据结构的特性、操作和应用场景。以下是一个概括性的数据结构教程内容: 一、数据结构的定义与分类 1. 数据的定义 数据...
本书共分为8章,从数据结构与算法的基础概念出发,逐步深入到线性表、栈、队列、串、数组、树、图等各类数据结构的讨论,每章均配以丰富的实例与代码,便于读者理解和实践。特别地,书中还融入了.NET框架中相关的...
西安电子科技大学提供的这份数据结构课件复习资料涉及了数据结构课程的核心概念、基本算法、以及各类数据结构的特点和操作方法。接下来将详细介绍这些知识点。 首先,数据结构课程的绪论部分介绍了数据结构的基本...
在各类IT公司的笔试和面试中,数据结构和算法的考察往往是重点,因为它们能有效评估一个程序员的基础知识和问题解决能力。这份压缩包文件包含了针对Java、C++、C#等编程语言的面试题目,以及专门的数据结构和算法...
C语言以其高效、灵活的特点,被用来实现和演示各类数据结构和算法,使得读者能够更加深入地理解数据结构的内部机制。 《李春葆:数据结构习题与解析(C语言版)》不仅适合计算机专业的大学生,也适合自学编程的爱好者...
通过对具体案例的研究,可以更好地理解不同数据结构的特点及其适用场景。 ### 学习资源推荐 为了更好地学习数据结构和算法,除了参考严蔚敏教授的经典教材之外,还可以利用高一凡提供的博客资源。个人博客...
这些数据结构各有特点,适用于不同的场景。例如,数组提供随机访问,但插入和删除操作可能效率较低;链表则反之,插入和删除速度快,但访问速度较慢。栈是一种后进先出(LIFO)的数据结构,常用于函数调用和递归;...
2. **掌握基本结构**: 牢记并理解不同数据结构的特点与应用场景。 3. **练习典型题目**: 多做习题,尤其是历年真题和模拟题。 4. **总结解题技巧**: 总结并掌握解决各类问题的通用方法。 5. **强化算法分析**: 重点...
在本文中,作者王洪水提出了MIS(管理信息系统)在线系统中数据结构设计的问题,并探讨了如何通过多维信息空间概念来解决基础数据结构的问题。在深入讨论之前,需要明确几个核心概念:数据结构、多维信息空间、管理...
强调知识的渐进性、兼顾知识的系统性,结构逻辑性强,针对高职高专学生的知识结构特点安排教学内容。 书中配套形式多样的习题,网上提供完备的电子教案,提供相应的素材、程序代码、习题参考答案等教学资源,完全...