数据结构知识点全面总结—精华(DOC 17页).doc
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构知识点全面总结—精华(DOC 17页).doc》由用户(2023DOC)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构知识点全面总结精华DOC 17页 数据结构 知识点 全面 总结 精华 DOC 17
- 资源描述:
-
1、第1章 绪论 内容提要: 数据结构研究的内容。针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。数据结构涵盖的内容: 基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。数据所有能被计算机识别、存储和处理的符号的集合。数据元素是数据的基本单位,具有完整确定的实际意义。数据对象具有相同性质的数据元素的集合,是数据的一个子集。数据结构是相互之间存在一种或多种特定关系的数据元素的集合,表示为: Data_Structure=(D, R)数据类型是一个值的集合和定义在该值上的一组操作的总称。抽象数据类型由用户定义的一个数学模型与定义在该模型上的一组操作, 它
2、由基本的数据类型构成。 算法的定义及五个特征。算法是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。算法的基本特性:输入、输出、有穷性、确定性、可行性 算法设计要求。正确性、可读性、健壮性、效率与低存储量需求 算法分析。时间复杂度、空间复杂度、稳定性学习重点: 数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算) 。 用计算语句频度来估算算法的时间复杂度。第二章 线性表内容提要: 线性表的逻辑结构定义,对线性表定义的操作。 线性表的定义:用数据元素的有限序列表示 线性表的存储结构:顺序存储结构和链式存储结构。顺序存储定义:把逻辑
3、上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。通过指针来实现! 线性表的操作在两种存储结构中的实现。数据结构的基本运算:修改、插入、删除、查找、排序1) 修改通过数组的下标便可访问某个特定元素并修改之。 核心语句: Vi=x; 顺序表修改操作的时间效率是 O(1)2) 插入在线性表的第i个位置前插入一个元素 实现步骤: 将第n至第i 位的元素向后移动一个位置; 将要插入的元素写到第i个位置; 表长加1。 注意:事先应判断: 插入位置i 是否合法?表是否已满? 应当符合条件: 1in+1 或 i=
4、1, n+1 核心语句:for (j=n; j=i; j-)aj+1=a j ; a i =x; n+; 插入时的平均移动次数为:n(n+1)/2(n+1)n/2O(n) 3) 删除删除线性表的第i个位置上的元素 实现步骤: 将第i+1 至第n 位的元素向前移动一个位置; 表长减1。 注意:事先需要判断,删除位置i 是否合法? 应当符合条件:1in 或 i=1, n 核心语句:for ( j=i+1; j=n; j+ )aj-1=aj; n-; 顺序表删除一元素的时间效率为:T(n)=(n-1)/2 O(n) 顺序表插入、删除算法的平均空间复杂度为O(1)单链表:(1)用单链表结构来存放26个
5、英文字母组成的线性表(a,b,c,z),请写出C语言程序。#include#includetypedef struct nodechar data; struct node *next;node; node *p,*q,*head; d1, c2.d2,则行优先存储时的地址公式为:二维数组列优先存储的通式为: 稀疏矩阵(含特殊矩阵)的存储及运算。 稀疏矩阵:矩阵中非零元素的个数较少(一般小于5%)学习重点: 线性表的逻辑结构,指线性表的数据元素间存在着线性关系。在顺序存储结构中,元素存储的先后位置反映出这种线性关系,而在链式存储结构中,是靠指针来反映这种关系的。 顺序存储结构用一维数组表示,给
6、定下标,可以存取相应元素,属于随机存取的存储结构。 链表操作中应注意不要使链意外“断开”。因此,若在某结点前插入一个元素,或删除某元素,必须知道该元素的前驱结点的指针。 掌握通过画出结点图来进行链表(单链表、循环链表等)的生成、插入、删除、遍历等操作。 数组(主要是二维)在以行序/列序为主的存储中的地址计算方法。 稀疏矩阵的三元组表存储结构。 稀疏矩阵的十字链表存储方法。补充重点:1.每个存储结点都包含两部分:数据域和指针域(链域)2.在单链表中,除了首元结点外,任一结点的存储位置由 其直接前驱结点的链域的值 指示。 3.在链表中设置头结点有什么好处? 头结点即在链表的首元结点之前附设的一个结
7、点,该结点的数据域可以为空,也可存放表长度等附加信息,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便。4. 如何表示空表?(1)无头结点时,当头指针的值为空时表示空表;(2)有头结点时,当头结点的指针域为空时表示空表。5.链表的数据元素有两个域,不再是简单数据类型,编程时该如何表示? 因每个结点至少有两个分量,且数据类型通常不一致,所以要采用结构数据类型。(x) 计算变量x的长度(字节数); malloc(m) 开辟m字节长度的地址空间,并返回这段空间的首地址; free(p) 释放指针p所指变量的存储空间,即彻底删除一个变量。7. 链表的运算效率
8、分析:(1)查找 因线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为 O(n)。(2) 插入和删除 因线性链表不需要移动元素,只要修改指针,一般情况下时间复杂度为 O(1)。但是,如果要在单链表中进行前插或删除操作,因为要从头查找前驱结点,所耗时间复杂度将是 O(n)。例:在n个结点的单链表中要删除已知结点*P,需找到它的前驱结点的地址,其时间复杂度为 O(n)8. 顺序存储和链式存储的区别和优缺点? 顺序存储时,逻辑上相邻的数据元素,其物理存放地址也相邻。顺序存储的优点是存储密度大,存储空间利用率高;缺点是插入或删除元素时不方便。链式存储时,相邻数据元素可随意存放,但所占存
9、储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。链式存储的优点是插入或删除元素时很方便,使用灵活。缺点是存储密度小,存储空间利用率低。 顺序表适宜于做查找这样的静态操作; 链表宜于做插入、删除这样的动态操作。 若线性表的长度变化不大,且其主要操作是查找,则采用顺序表; 若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。9. 判断:“数组的处理比其它复杂的结构要简单”,对吗?答:对的。因为 数组中各元素具有统一的类型; 数组元素的下标一般具有固定的上界和下界,即数组一旦被定义,它的维数和维界就不再改变。数组的基本操作比较简单,除了结构的初始化和销毁之外,只有存
10、取元素和修改元素值的操作。10. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 行下标 、列下标 和 元素值 。 11. 写出右图所示稀疏矩阵的压缩存储形式。解:介绍3种存储形式。法1:用线性表表示: (( 1,2,12) ,(1,3,9), (3,1,-3), (3,5,14), (4,3,24), (5,2,18) ,(6,1,15), (6,4,-7))法2:用十字链表表示用途:方便稀疏矩阵的加减运算方法:每个非0元素占用5个域法3:用三元组矩阵表示:稀疏矩阵压缩存储的缺点:将失去随机存取功能代码:1.用数组V来存放26个英文字母组成的线性表(
11、a,b,c,z),写出在顺序结构上生成和显示该表的C语言程序。char V30;void build() base=(QElemType *)malloc(sizeof (QElemType )* QUEUE_MAXSIZE; base=(QElemType *)malloc(sizeof(QElemType)* QUEUE_MAXSIZE); rear + 1 ) % QUEUE_MAXSIZE; = e; 什么要设计队列?它有什么独特用途? 离散事件的模拟(模拟事件发生的先后顺序,例如 CPU芯片中的指令译码队列); 操作系统中的作业调度(一个CPU执行多个作业); 简化程序设计。3. 什
12、么叫“假溢出” ?如何解决?答:在顺序队中,当尾指针已经到了数组的上界,不能再有入队操作,但其实数组中还有空位置,这就叫“假溢出”。解决假溢出的途径采用循环队列。4.在一个循环队列中,若约定队首指针指向队首元素的前一个位置。那么,从循环队列中删除一个元素时,其操作是先 移动队首位置 ,后 取出元素。5.线性表、栈、队的异同点:相同点:逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。不同点: 运算规则不同:线性表为随机存取;而栈是只允许在一端进行插入和删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、
13、另一端进行删除运算,因而是先进先出表FIFO。 用途不同,线性表比较通用;堆栈用于函数调用、递归和简化设计等;队列用于离散事件模拟、OS作业调度和简化设计等。第四章 串内容提要: 串是数据元素为字符的线性表,串的定义及操作。串即字符串,是由零个或多个字符组成的有限序列,是数据元素为单个字符的特殊线性表。串比较:int strcmp(char *s1,char *s2); 求串长:int strlen(char *s); 串连接:char strcat(char *to,char *from) 子串T定位:char strchr(char *s,char *c); 串的存储结构,因串是数据元素为
14、字符的线性表,所以存在“结点大小”的问题。模式匹配算法。串有三种机内表示方法:模式匹配算法:算法目的:确定主串中所含子串第一次出现的位置(定位)定位问题称为串的模式匹配,典型函数为Index(S,T,pos)BF算法的实现即编写Index(S, T, pos)函数BF算法设计思想:将主串S的第pos个字符和模式T的第1个字符比较, 若相等,继续逐个比较后续字符;若不等,从主串S的下一字符(pos+1)起,重新与T第一个字符比较。 直到主串S的一个连续子串字符序列与模式T相等。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功。否则,匹配失败,返回值 0。Int Index_BP(SStr
15、ing S, SString T, int pos) 串和空白串有无区别?答:有区别。空串(Null String)是指长度为零的串;而空白串(Blank String),是指包含一个或多个空白字符 (空格键)的字符串.2. “空串是任意串的子串;任意串S都是S本身的子串,除S本身外,S的其他子串称为S的真子串。” 第六章 树和二叉树内容提要: 树是复杂的非线性数据结构,树,二叉树的递归定义,基本概念,术语。树:由一个或多个(n0)结点组成的有限集合T,有且仅有一个结点称为根(root),当n1时,其余的结点分为m(m0)个互不相交的有限集合T1,T2,Tm。每个集合本身又是棵树,被称作这个根
16、的子树 。二叉树:是n(n0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。术语:P88 二叉树的性质,存储结构。性质1: 在二叉树的第i层上至多有2i-1个结点(i0)。性质2: 深度为k的二叉树至多有2k-1个结点(k0)。性质3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数(n0)必定为n21 性质4: 具有n个结点的完全二叉树的深度必为 性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号为2i1;其双亲的编号必为i/2(i1 时为根,除外)。 二叉树的存储结构:一、顺序存储结构按二叉
展开阅读全文