(完整word)非常实用的数据结构知识点总结,推荐文档
数据结构知识总结

数据结构全书知识梳理总结第一章绪论数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
如整数这个集合中,10 这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。
数据结构的定义包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。
数据的逻辑结构分为:线性结构、树形结构、复杂结构数据的存储结构分为:顺序表示、链接表示、散列表示、索引表示时间复杂度和渐近时间复杂度:前者是某个算法的时间耗费,它是该算法所求解问题规模n 的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
但是我们总是考虑在最坏的情况下的时间复杂度。
以保证算法的运行时间不会比它更长。
第二章线性表线性表的逻辑结构特征是很容易理解的,如其名,它的逻辑结构特征就好象是一条线,上面打了一个个结,很形象的,如果这条线上面有结,那么它就是非空表,只能有一个开始结点,有且只能有一个终端结点,其它的结前后所相邻的也只能是一个结点(直接前趋和直接后继)。
关于线性表上定义的基本运算,主要有构造空表、求表长、取结点、查找、插入、删除等。
线性表的逻辑结构和存储结构之间的关系。
在计算机中,如何把线性表的结点存放到存储单元中,就有许多方法,最简单的方法就是按顺序存储。
就是按线性表的逻辑结构次序依次存放在一组地址连续的存储单元中。
在存储单元中的各元素的物理位置和逻辑结构中各结点相邻关系是一致的。
数据结构知识总结

数据结构知识总结数据结构是计算机科学中最基本的概念之一,它研究了如何组织和管理数据,以便有效地使用和操作。
数据结构是计算机程序设计中的核心,对于解决实际问题具有重要的意义。
下面是我对数据结构的知识总结,希望对你有所帮助。
一、数据结构的定义和分类数据结构是指一种特定的组织形式,用于存储和操作数据的方法。
它可以分为线性结构和非线性结构。
线性结构包括数组、链表、栈和队列等,而非线性结构包括树和图等。
二、数组数组是最简单的数据结构之一,它将相同类型的元素按顺序存放在一段连续的内存空间中。
数组的特点是可以随机访问,但插入和删除元素的效率较低。
三、链表链表是一种基本的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
链表的特点是插入和删除元素的效率较高,但随机访问的效率较低。
四、栈栈是一种特殊的线性结构,它的插入和删除操作只能在栈的一端进行。
栈的特点是先进后出,即最后插入的元素最先出栈。
五、队列队列是一种特殊的线性结构,它的插入操作只能在队尾进行,删除操作只能在队首进行。
队列的特点是先进先出,即最先插入的元素最先出队。
六、树树是一种非线性的数据结构,它由节点和边组成。
节点之间的关系是层次结构,树的最上面的节点称为根节点,没有子节点的节点称为叶子节点。
七、图图是一种非线性的数据结构,它由节点和边组成。
图的节点可以具有任意的关系,可以是有向的或无向的。
图可以用于表示网络、地图等各种实际问题。
八、排序算法排序算法是对数据进行排序的一种方法。
常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序和归并排序等。
每种排序算法都有自己的特点和适用场景。
九、查找算法查找算法是在数据集中查找特定元素的一种方法。
常见的查找算法包括线性查找、二分查找和哈希查找等。
不同的查找算法对于不同的数据集有不同的效率。
十、算法复杂度分析算法复杂度分析是研究算法效率的一种方法。
通常通过时间复杂度和空间复杂度来表示算法的效率。
文档:算法与数据结构知识点总结

算法与数据结构知识点总结(教材:严蔚敏编著 老师:范丹)学习目标1.熟练掌握基本的数据结构2.理解相关操作的算法实现3.掌握算法的复杂度分析方法4.领会从数据结构的设计和实现角度优化解决实际问题的思想相关术语&基础知识 1.数据、数据元素数据:对客观事物的符号表示,所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:组成数据的、具有意义的基本单位,计算机中通常作为整体处理。
2.数据项组成数据的不可分割的最小单位 3.数据对象性质相同的数据元素的集合,是数据的子集 4.逻辑结构数据对象中数据元素之间的逻辑关系;是从操作对象抽象出来的数学模型5.物理结构(存储结构)数据元素逻辑关系在计算机中的表示(映像);包括数据元素的表示和逻辑关系的表示;关系到数据操作的实现本资料由5432与5434宿舍共同整理,在此感谢其他几位同学的辛苦付出。
水平所限,难免有错误、遗漏之处,敬请谅解,也欢迎向我指出。
标黄色的地方不是在画重点,而是表示没有找到资料是我自己写的,请带着批判的眼光去看: ) 另外,有的算法我实在没法排在一页了: ( 麻烦大家看的时候将就一下——国金14学委 马玥 2015秋6.数据类型数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
7.抽象数据类型(ADT)是指一个数据模型以及定义在该模型上的一组操作。
三要素:数据元素、逻辑关系、操作8.算法的设计原则正确性、可读性、健壮性、高效率与低存储量9.算法效率的度量10.常见结构的时间复杂度★(1)顺序结构O(1)(2)分支结构O(1)(3)循环结构的时间复杂度= 循环体内语句的频度(重复执行次数) 11.时间复杂度的计算时间复杂度的简化求解步骤step 1. 定位最深层循环step 2. 由内向外逐层计算循环体的执行频度step 3. 只保留最高阶项step 4. 去掉最高阶项系数得到的结果即为时间复杂度的大O阶。
12.时间复杂度的大小关系★13.影响空间复杂度的因素(1)程序本身所占空间(2)输入数据所占空间(3)辅助变量所占空间若输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占额外空间。
数据结构学习知识点全面总结计划—精华版本.docx

第1章绪论内容提要:◆ 数据结构研究的内容。
操作对象以及它们之间的关系和操作。
针对非数值计算的程序设计问题,研究计算机的数据结构涵盖的内容:◆ 基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。
数据——所有能被计算机识别、存储和处理的符号的集合。
数据元素——是数据的基本单位,具有完整确定的实际意义。
数据对象——具有相同性质的数据元素的集合,是数据的一个子集。
数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为:Data_Structure=(D, R)数据类型——是一个值的集合和定义在该值上的一组操作的总称。
抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作,它由基本的数据类型构成。
◆ 算法的定义及五个特征。
算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
算法的基本特性:输入、输出、有穷性、确定性、可行性◆ 算法设计要求。
①正确性、②可读性、③健壮性、④效率与低存储量需求◆ 算法分析。
时间复杂度、空间复杂度、稳定性学习重点:◆ 数据结构的“三要素” :逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。
◆ 用计算语句频度来估算算法的时间复杂度。
第二章线性表内容提要:◆ 线性表的逻辑结构定义,对线性表定义的操作。
线性表的定义:用数据元素的有限序列表示◆ 线性表的存储结构:顺序存储结构和链式存储结构。
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
链式存储结构 :其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。
通过指针来实现!◆ 线性表的操作在两种存储结构中的实现。
数据结构的基本运算:修改、插入、删除、查找、排序1)修改——通过数组的下标便可访问某个特定元素并修改之。
核心语句 : V[i]=x;顺序表修改操作的时间效率是O(1)2)插入——在线性表的第 i 个位置前插入一个元素实现步骤:①将第 n 至第 i 位的元素向后移动一个位置;②将要插入的元素写到第 i 个位置;③表长加1。
数据结构知识点总结归纳

数据结构知识点总结归纳一、概述数据结构是计算机科学中的核心概念之一,它是研究数据在计算机中的存储、组织和操作的学科。
数据结构的选择和设计直接影响着算法的效率和程序的质量。
本文将对常用的数据结构进行总结和归纳,包括数组、链表、栈、队列、树、图等。
二、数组数组是最基本、最简单的数据结构之一。
它是一种连续存储的数据结构,可以通过下标访问元素。
数组具有随机访问的特性,可以快速定位元素。
但数组的大小固定,插入和删除操作需要移动大量元素,效率较低。
三、链表链表是一种非连续存储的数据结构,由节点组成。
每个节点包含数据和指针,指针指向下一个节点。
链表可以动态地分配内存,插入和删除操作效率较高。
但链表的随机访问较慢,需要遍历整个链表。
四、栈栈是一种先进后出(LIFO)的数据结构。
栈的操作包括入栈和出栈,只能在栈顶进行。
栈常用于表达式求值、函数调用和递归等场景。
栈可以用数组或链表实现。
五、队列队列是一种先进先出(FIFO)的数据结构。
队列的操作包括入队和出队,入队在队尾进行,出队在队头进行。
队列常用于广度优先搜索、任务调度和消息传递等场景。
队列可以用数组或链表实现。
六、树树是一种非线性的数据结构,由节点和边组成。
每个节点可以有多个子节点,根节点没有父节点。
树的应用广泛,包括二叉树、堆、红黑树等。
树的遍历方式有前序遍历、中序遍历和后序遍历。
七、图图是一种复杂的数据结构,由顶点和边组成。
顶点表示对象,边表示对象之间的关系。
图可以分为有向图和无向图,可以用邻接矩阵或邻接表表示。
图的应用包括网络拓扑、社交网络和路径规划等。
八、其他数据结构除了上述常用的数据结构,还有一些其他的数据结构,如哈希表、堆、字典树等。
哈希表通过哈希函数将关键字映射到数组的索引,实现高效的查找和插入操作。
堆是一种特殊的树,用于高效地找出最大或最小元素。
字典树用于高效地存储和搜索字符串集合。
九、总结数据结构是计算机科学中非常重要的一门学科,掌握好数据结构对于编程能力的提升和算法设计的优化至关重要。
《数据结构》知识点

第1章绪论1.1 数据是表示客观事物的符号,是对客观事物的抽象,是信息的载体。
对计算机科学而言,经抽象(数字化)后,能被计算机识别、存储和加工处理的客观事物均称作数据。
1.2 具有某种共同属性的数据集合称作数据对象。
数据集中的元素称作数据元素,简称元素,又称结点、顶点、记录等。
数据对象={数据元素,数据元素,…,数据元素}1.3 就数据的自身结构而言,分为原子型和结构型,前者是不可分解或无须分解的数据,后者可分解为若干个数据项。
1.4 通常,数据项是无须分解或不可分解的所谓最小数据单位,数据元素是作为整体对待的基本数据单位。
1.5 数据集和其上定义的一组操作合称数据类型,即,数据类型=数据集+一组操作=(数据集,一组操作)[了解]狭义地说,数据类型侧重于数据的值,不区分值相同的数据,忽略数据的自身结构。
例. 复数类=(复数集,运算集),复数集以复数为基本元素,复数由两个数据项组成:实部和虚部或模和幅角。
1.6 数据集和其元素间的一组关系合称数据结构,即,数据结构=数据对象+数据关系=(数据对象,数据关系)1.7 数据结构的抽象描述称作逻辑结构。
逻辑结构分为:①集合结构;②线性结构;③树形结构(简称树结构);④图形结构(简称图结构)。
1.8 树结构和图结构统称非线性结构。
1.9 数据结构在计算机上的具体实现称作存储结构或物理结构。
存储结构分为:①顺序存储;②链式存储;③索引存储;④散列存储。
1.10 数据结构和其上定义的一组操作的抽象描述合称抽象数据类型,即,抽象数据类型=数据结构+基本操作=数据对象+数据关系+基本操作1.11 求解问题的步骤称作算法,是合法指令的有限序列,具有以下主要特性:①有穷性;②确定性;③可行性。
1.12 算法所用的总时间称作时间复杂度,通常用算法中执行次数最多(频度最高)的操作的执行次数(频度)或数量级表示。
时间复杂度又称时间效率,但两者的高低是相反的。
1.13 算法所用最大存储量称作空间复杂度。
数据结构重点整理
数据结构重点整理数据结构重点整理一、介绍数据结构是计算机科学中非常重要的一门学科,它研究的是数据在计算机中的存储和组织方式。
数据结构的选择和设计直接影响到算法的效率和程序的性能。
本文重点整理了数据结构的相关概念、常用数据结构以及常见的算法。
二、数据结构的基本概念⒈数据和数据元素的概念●数据是对客观事物的符号表示,是能被计算机识别和处理的信息。
●数据元素是数据的基本单位,一个数据元素可以由一个或多个数据项组成。
⒉数据结构的定义●数据结构是指相互之间存在一种或多种特定关系的数据元素集合。
⒊数据类型●原子类型:不可再分的基本类型,如整数、实数等。
●结构类型:由若干个类型组合而成,具有复杂的内部结构,如数组、链表等。
⒋数据的逻辑结构●线性结构:数据元素之间一对一关系,线性表是最常见的线性结构。
●树形结构:数据元素之间存在一对多的层次关系,如二叉树、堆等。
●图形结构:数据元素之间多对多的关系,如有向图、无向图等。
⒌数据的存储结构●顺序存储结构:将数据元素依次存放在连续的内存空间中。
●链式存储结构:通过指针将数据元素连接起来,每个节点包含数据和指向下一个节点的指针。
三、常见的数据结构⒈数组●数组是一种线性表结构,用一组连续的内存空间存储相同类型的数据元素。
●特点:支持随机访问,插入和删除操作效率低。
⒉链表●链表是一种链式存储结构,通过指针将数据元素连接起来。
●特点:插入和删除操作效率高,随机访问效率低。
⒊栈●栈是一种特殊的线性表结构,只能在栈顶进行插入和删除操作,遵循先入后出的原则。
⒋队列●队列是一种特殊的线性表结构,只能在队尾进行插入操作,在队首进行删除操作,遵循先入先出的原则。
⒌树●树是一种非线性表结构,由节点和边组成。
●常见的树结构:二叉树、平衡二叉树、B树、AVL树等。
⒍图●图是一种非线性表结构,由节点和边组成,节点之间的关系可以是任意的。
四、常见的数据结构算法⒈查找算法●顺序查找:按照顺序逐个比较,直到找到目标元素或查找结束。
数据结构知识点归纳总结(经典)
数据结构知识点归纳总结(经典)1. 简介数据结构是计算机科学中的一个重要概念,它用于组织和存储数据,以便于操作和管理。
数据结构能够帮助我们更有效地处理和分析大量的数据。
2. 常见的数据结构以下是一些常见的数据结构类型:2.1 数组(Array)数组是一种连续存储数据元素的数据结构,可以按照索引访问元素。
它具有固定大小,可以用于存储相同类型的元素。
2.2 链表(Linked List)链表是一种通过指针将元素连接起来的数据结构。
它可以包含不同类型的元素,并且具有动态分配内存的能力。
2.3 栈(Stack)栈是一种具有后进先出(LIFO)特性的数据结构。
它只能在栈顶进行插入和删除操作。
2.4 队列(Queue)队列是一种具有先进先出(FIFO)特性的数据结构。
它可以在队尾插入元素,在队头删除元素。
2.5 树(Tree)树是一种非线性的数据结构,它由节点和边构成。
树的一个节点可以有多个子节点,但每个节点只有一个父节点。
2.6 图(Graph)图是一种由节点和边构成的数据结构。
节点之间的边可以表示节点之间的关系。
2.7 哈希表(Hash Table)哈希表是一种以键-值对形式存储数据的数据结构。
它使用哈希函数将键映射到存储位置,以实现快速的查找操作。
3. 常见的数据结构操作数据结构不仅仅是存储数据,还包括对数据的操作。
以下是一些常见的数据结构操作:- 插入元素:向数据结构中添加新元素。
- 删除元素:从数据结构中删除指定元素。
- 查找元素:在数据结构中查找指定元素。
- 遍历元素:按照特定的顺序访问数据结构中的所有元素。
- 排序元素:对数据结构中的元素进行排序。
- 合并结构:将两个或多个数据结构合并成一个。
- 分割结构:将一个数据结构分割成两个或多个。
4. 数据结构的应用数据结构在计算机科学中有广泛的应用,包括但不限于以下领域:- 数据库系统- 图像处理- 网络通信- 操作系统- 算法设计和分析5. 总结数据结构是计算机科学中的重要概念,它为我们处理和管理大量数据提供了有效的方式。
数据结构知识点总结
12 20
6 6*
8 12*
8 12*
24
6 6*
6 6*
24
24
第七章 图
理解和掌握
图的基本概念 图的存储表示 图的遍历 最小生成树 拓扑排序
需要掌握的知识点
图的基本概念 顶点的度、完全图、生成树。 无向图顶点度的和等于边数的2倍。 有向图顶点的度等于入度+出度。 无向连通图最大边数n(n-1)/2, 最少 边数n-1(生成树)。 有向强连通图最大边数n(n-1), 最少 边数n, (特例, n=1时最少边数0) 。
有序单链表插入与删除算法。 有序单链表建立算法及性能分析。
循环链表
链表最后一个结点的链接指针指示 表头结点。只要知道任一结点地址 就能遍历其他所有结点。
若操作仅在链表两头, 可仅给出链尾 指针, 它的下一结点即链头 。
对于需要循环操作的线性表, 可用循环 链表存储,例如链式队列的实现。
码长度)的计算。 构造霍夫曼树时权大的离根最近,权
小的离根最远。 根的权值相同时,新构造出来的树的
根一般位于右边。但若用“堆”存储 各树的根结点,则要看它们在堆中调 整的结果来定哪一个做左子树。
例:12,8,2,6,4
12 8 2 6 4
12 8 6 6*
24
32
12 8 12*
12 20
ASL 1 n n i n1 i1
有序表的折半搜索 折半搜索的过程 折半搜索的平均搜索长度
搜索成功时的平均搜索长度ASL
AS n 1 Li n1C i n 1i n1lo2ig1
元素的最大比较次数为 log2(n+1) 在区间[low, high]中取中点
数据结构知识点全面总结—精华版
数据结构知识点全⾯总结—精华版第1章绪论内容提要:◆数据结构研究的内容。
针对⾮数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。
数据结构涵盖的内容:◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。
数据——所有能被计算机识别、存储和处理的符号的集合。
数据元素——是数据的基本单位,具有完整确定的实际意义。
数据对象——具有相同性质的数据元素的集合,是数据的⼀个⼦集。
数据结构——是相互之间存在⼀种或多种特定关系的数据元素的集合,表⽰为:Data_Structure=(D, R)数据类型——是⼀个值的集合和定义在该值上的⼀组操作的总称。
抽象数据类型——由⽤户定义的⼀个数学模型与定义在该模型上的⼀组操作,它由基本的数据类型构成。
◆算法的定义及五个特征。
算法——是对特定问题求解步骤的⼀种描述,它是指令的有限序列,是⼀系列输⼊转换为输出的计算步骤。
算法的基本特性:输⼊、输出、有穷性、确定性、可⾏性◆算法设计要求。
①正确性、②可读性、③健壮性、④效率与低存储量需求◆算法分析。
时间复杂度、空间复杂度、稳定性学习重点:◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。
◆⽤计算语句频度来估算算法的时间复杂度。
内容提要:◆线性表的逻辑结构定义,对线性表定义的操作。
线性表的定义:⽤数据元素的有限序列表⽰◆线性表的存储结构:顺序存储结构和链式存储结构。
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不⼀定相邻。
通过指针来实现!◆线性表的操作在两种存储结构中的实现。
数据结构的基本运算:修改、插⼊、删除、查找、排序1)修改——通过数组的下标便可访问某个特定元素并修改之。
核⼼语句: V[i]=x;顺序表修改操作的时间效率是 O(1)2) 插⼊——在线性表的第i个位置前插⼊⼀个元素实现步骤:①将第n⾄第i 位的元素向后移动⼀个位置;②将要插⼊的元素写到第i个位置;③表长加1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构知识点概括第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。
·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。
·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。
定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。
相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。
算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
算法的时间复杂度和空间复杂度合称算法复杂度。
第二章线性表线性表是由n≥0个数据元素组成的有限序列。
n=0是空表;非空表,只能有一个开始结点,有且只能有一个终端结点。
线性表上定义的基本运算:·构造空表:Initlist(L)·求表长:Listlength(L)·取结点:GetNode(L,i)·查找:LocateNode(L,x)·插入:InsertList(L,x,i)·删除:Delete(L,i)顺序表是按线性表的逻辑结构次序依次存放在一组地址连续的存储单元中。
在存储单元中的各元素的物理位置和逻辑结构中各结点相邻关系是一致的。
地址计算:LOCa(i)=LOCa(1)+(i-1)*d;(首地址为1)在顺序表中实现的基本运算:·插入:平均移动结点次数为n/2;平均时间复杂度均为O(n)。
·删除:平均移动结点次数为(n-1)/2;平均时间复杂度均为O(n)。
线性表的链式存储结构中结点的逻辑次序和物理次序不一定相同,为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还存储了其后继结点的地址信息(即指针或链)。
这两部分信息组成链表中的结点结构。
一个单链表由头指针的名字来命名。
单链表运算:·建立单链表·头插法:s->next=head;head=s;生成的顺序与输入顺序相反。
平均时间复杂度均为O(n)。
·尾插法:head=rear=null;if(head=null)head=s;else r->next=s;r=s;平均时间复杂度均为O(n)·加头结点的算法:对开始结点的操作无需特殊处理,统一了空表和非空表。
·查找·按序号:与查找位置有关,平均时间复杂度均为O(n)。
·按值:与输入实例有关,平均时间复杂度均为O(n)。
·插入运算:p=GetNode(L,i-1);s->next=p->next;p->next=s;平均时间复杂度均为O(n)·删除运算:p=GetNode(L,i-1);r=p->next;p->next=r->next;free(r);平均时间复杂度均为O(n)单循环链表是一种首尾相接的单链表,终端结点的指针域指向开始结点或头结点。
链表终止条件是以指针等于头指针或尾指针。
采用单循环链表在实用中多采用尾指针表示单循环链表。
优点是查找头指针和尾指针的时间都是O(1),不用遍历整个链表。
双链表就是双向链表,就是在单链表的每个结点里再增加一个指向其直接前趋的指针域prior,形成两条不同方向的链。
由头指针head惟一确定。
双链表也可以头尾相链接构成双(向)循环链表。
双链表上的插入和删除时间复杂度均为O (1)。
顺序表和链表的比较:·基于空间:·顺序表的存储空间是静态分配,存储密度为1;适于线性表事先确定其大小时采用。
·链表的存储空间是动态分配,存储密度<1;适于线性表长度变化大时采用。
·基于时间:·顺序表是随机存储结构,当线性表的操作主要是查找时,宜采用。
·以插入和删除操作为主的线性表宜采用链表做存储结构。
·若插入和删除主要发生在表的首尾两端,则宜采用尾指针表示的单循环链表。
第三章栈和队列栈(Stack)是仅限制在表的一端进行插入和删除运算的线性表,称插入、删除这一端为栈顶,另一端称为栈底。
表中无元素时为空栈。
栈的修改是按后进先出的原则进行的,我们又称栈为LIFO表(Last In First Out)。
通常栈有顺序栈和链栈两种存储结构。
栈的基本运算有六种:·构造空栈:InitStack(S)·判栈空:StackEmpty(S)·判栈满:StackFull(S)·进栈:Push(S,x)·退栈:Pop(S)·取栈顶元素:StackTop(S)在顺序栈中有“上溢”和“下溢”的现象。
·“上溢”是栈顶指针指出栈的外面是出错状态。
·“下溢”可以表示栈为空栈,因此用来作为控制转移的条件。
顺序栈中的基本操作有六种:·构造空栈·判栈空·判栈满·进栈·退栈·取栈顶元素链栈则没有上溢的限制,因此进栈不要判栈满。
链栈不需要在头部附加头结点,只要有链表的头指针就可以了。
链栈中的基本操作有五种:·构造空栈·判栈空·进栈·退栈·取栈顶元素队列(Queue)是一种运算受限的线性表,插入在表的一端进行,而删除在表的另一端进行,允许删除的一端称为队头(front),允许插入的一端称为队尾(rear),队列的操作原则是先进先出的,又称作FIFO表(First InFirst Out) .队列也有顺序存储和链式存储两种存储结构。
队列的基本运算有六种:·置空队:InitQueue(Q)·判队空:QueueEmpty(Q)·判队满:QueueFull(Q)·入队:EnQueue(Q,x)·出队:DeQueue(Q)·取队头元素:QueueFront(Q)顺序队列的“假上溢”现象:由于头尾指针不断前移,超出向量空间。
这时整个向量空间及队列是空的却产生了“上溢”现象。
为了克服“假上溢”现象引入循环向量的概念,是把向量空间形成一个头尾相接的环形,这时队列称循环队列。
判定循环队列是空还是满,方法有三种:·一种是另设一个布尔变量来判断;·第二种是少用一个元素空间,入队时先测试((rear+1)%m = front)?满:空;·第三种就是用一个计数器记录队列中的元素的总数。
队列的链式存储结构称为链队列,一个链队列就是一个操作受限的单链表。
为了便于在表尾进行插入(入队)的操作,在表尾增加一个尾指针,一个链队列就由一个头指针和一个尾指针唯一地确定。
链队列不存在队满和上溢的问题。
在链队列的出队算法中,要注意当原队中只有一个结点时,出队后要同进修改头尾指针并使队列变空。
第四章串串是零个或多个字符组成的有限序列。
·空串:是指长度为零的串,也就是串中不包含任何字符(结点)。
·空白串:指串中包含一个或多个空格字符的串。
·在一个串中任意个连续字符组成的子序列称为该串的子串,包含子串的串就称为主串。
·子串在主串中的序号就是指子串在主串中首次出现的位置。
·空串是任意串的子串,任意串是自身的子串。
串分为两种:·串常量在程序中只能引用不能改变;·串变量的值可以改变。
串的基本运算有:·求串长strlen(char*s)·串复制strcpy(char*to,char*from)·串联接strcat(char*to,char*from)·串比较charcmp(char*s1,char*s2)·字符定位strchr(char*s,charc)串是特殊的线性表(结点是字符),所以串的存储结构与线性表的存储结构类似。
串的顺序存储结构简称为顺序串。
顺序串又可按存储分配的不同分为:·静态存储分配:直接用定长的字符数组来定义。
优点是涉及串长的操作速度快,但不适合插入、链接操作。
·动态存储分配:是在定义串时不分配存储空间,需要使用时按所需串的长度分配存储单元。
串的链式存储就是用单链表的方式存储串值,串的这种链式存储结构简称为链串。
链串与单链表的差异只是它的结点数据域为单个字符。
为了解决“存储密度”低的状况,可以让一个结点存储多个字符,即结点的大小。
顺序串上子串定位的运算:又称串的“模式匹配”或“串匹配”,是在主串中查找出子串出现的位置。
在串匹配中,将主串称为目标(串),子串称为模式(串)。
这是比较容易理解的,串匹配问题就是找出给定模式串P在给定目标串T中首次出现的有效位移或者是全部有效位移。
最坏的情况下时间复杂度是O((n-m+1)m),假如m与n同阶的话则它是O(n^2)。
链串上的子串定位运算位移是结点地址而不是整数第五章多维数组数组一般用顺序存储的方式表示。
存储的方式有:·行优先顺序,也就是把数组逐行依次排列。
PASCAL、C·列优先顺序,就是把数组逐列依次排列。