数据结构重难点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【数据结构】清华版严蔚敏《数据结构》重点要点
第二章线性表
1线性表的特点及逻辑结构2.线性表的顺序存储结构及基本操作(插入、删除、定位)
本章难点
线性表的顺序存储结构,基本操作在顺序表上的实现及时间复杂度的计算。
内容和要求
线性结构特点:在数据元素的非空有限集中存在唯一的一个被称作“第一个”的数据元素,存在唯一的一个被称作“最后一个”的数据元素,除第一个外,集合中的每个数据元素均只有一个前驱,除最后一个外,集合中的每个数据元素均只有一个后继。
§2.1线性表的定义和逻辑结构
定义:一个线性表是n个数据元素的有限序列。
§2.2线性表的顺序存储结构
一、顺序表:
1、定义:用一组地址连续的存储单元存放一个线性表叫顺序表。
2、元素地址计算方法:
LOC(ai)=LOC(a1)+(i-1)*L
LOC(ai+1)=LOC(ai)+L
其中:
L—一个元素占用的存储单元个数
LOC(ai)—线性表第i个元素的地址
3、特点:实现逻辑上相邻—物理地址相邻;实现随机存取
4、实现:可用C语言的一维数组实现
1)插入定义:线性表的插入是指在第I(1£i£n+1)个元素之前插入一个新的数据元素x,使长度为n的线性表。算法时间复杂度T(n)
2)删除定义:线性表的删除是指将第i(1£i£n)个元素删除,使长度为n的线性表。算法评价
5、顺序存储结构的优缺点
优点:逻辑相邻,物理相邻;可随机存取任一元素;存储空间使用紧凑
缺点:插入、删除操作需要移动大量的元素;预先分配空间需按最大空间分配,利用不充分;表容量难以扩充。
习题第19页1,4
第三章链式存储结构
本章重点
1.线性表的链式存储结构的特点2.单链表的基本运算及实现,循环链表,双向链表
单链表的基本运算(建立、查找、插入、删除)实现及算法
内容和要求
§3.1线性表的链式存储结构
特点:用一组任意的存储单元存储线性表的数据元素利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素
每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息结点
数据域:元素本身信息
指针域:指示直接后继的存储位置
实现
单链表的基本运算:
单链表特点
它是一种动态结构,整个存储空间为多个链表共用
不需预先分配空间
指针占用额外存储空间
不能随机存取,查找速度慢
循环链表(circular linked list)
循环链表是表中最后一个结点的指针指向头结点,使链表构成环状
特点:从表中任一结点出发均可找到表中其他结点,提高查找效率
操作与单链表基本一致,循环条件不同
单链表p或p->link=NULL
循环链表p或p->link=H
双向链表(double linked list)
单链表具有单向性的缺点
结点定义
习题第34页3,4,5,8
第四章栈和队列
本章重点
1.栈的七种基本操作,两种存储结构(顺序、链式)
2.队列的七种基本操作,两种存储结构(顺序、链式)
本章难点
1.顺序栈上实现栈的几个基本操作所对应的算法
2.链栈上元素进栈和出栈的算法
3.队列的表现和操作实现
内容和要求
栈和队列是两种特殊的线性表,是操作受限的线性表,称限定性DS
§4.1栈(stack)
栈的定义和特点
定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈
特点:先进后出(FILO)或后进先出(LIFO)
栈的存储结构
顺序栈的实现和入栈、出栈算法
链栈的入栈和出栈算法
§4.2队列
队列的定义及特点
定义:队列是限定只能在表的一端进行插入,在表的另一端进行删除的线性表
队尾(rear)——允许插入的一端
队头(front)——允许删除的一端
队列特点:先进先出(FIFO)
链队列:结点定义
队列的顺序存储结构
实现:用一维数组实现sq[M]
存在问题
设数组维数为M,则:
当front=-1,rear=M-1时,再有元素入队发生溢出——真溢出
当front¹-1,rear=M-1时,再有元素入队发生溢出——假溢出
解决方案
队首固定,每次出队剩余元素向下移动——浪费时间
循环队列
基本思想:把队列设想成环形,让sq[0]接在sq[M-1]之后,若rear+1==M,则令rear=0;
习题第51页1,2,5,
第五章其他线性数据结构
本章重点
1.串的存储结构及基本操作实现
2.二维数组基本操作,向量存储结构
3.稀疏矩阵的压缩存储、转置算法
本章难点
1.串的堆分配存储结构
2.二维数组向量存储结构、地址的计算方法、稀疏矩阵的压缩存储、转置算法
自学内容和要求
§5.1串
定义
※定栈的定义:串是由零个或多个字符组成的有限序列。
一般记为:S=‘a1a2….an’(n≥0)
※基本操作有九种
«定义串的存储结构
※串的顺序定长存储结构
※堆分配存储结构
※串的基本操作的实现
1.在串的顺序定长相信结构上实现CONCAT(S,T1,T2)操作
2.在串的堆分配存储结构上实现CONCAT(S,T1,T2)操作
3.在串的顺序定长存储结构上实现子串的定位操作INDEX(S,T)
§5.2多维数组
定义二维数组
※定义及基本操作定义:数组是由下标和值组成的序对的集,数组可以看成是一种特殊的线性表,即线性表中数据元素本身也是一个线性表
※基本运算:给定一组下标,存取对应的数据元给定一组下标,修改相应数据元素的值。
数组的顺序存储结构次序约定
以行序为主序
以列序为主序
数组元素地址计算方法
矩阵的压缩存储
对称矩阵
三角矩阵
稀疏矩阵的压缩存储方法
顺序存储结构
三元组表
带辅助行向量的二元组表
求转置矩阵