这是一个目录
- 数据结构概念题复习
-
- 第一章
- 第二章
-
- [(1)将两个递增的有序链表合并为⼀个递增的有序链表。要求结果链表仍使⽤原来两个链表 的存储空间,不另外占⽤其他的存储空间。表中不允许有重复的数据。](#(1)将两个递增的有序链表合并为⼀个递增的有序链表。要求结果链表仍使⽤原来两个链表 的存储空间,不另外占⽤其他的存储空间。表中不允许有重复的数据。)
- [(2)将两个⾮递减的有序链表合并为⼀个⾮递增的有序链表。要求结果链表仍使⽤原来两个 链表的存储空间,不另外占⽤其他的存储空间。表中允许有重复的数据。 (3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计⼀个算法,⽤于求 出A与B的交集,并存放在A链表中。](#(2)将两个⾮递减的有序链表合并为⼀个⾮递增的有序链表。要求结果链表仍使⽤原来两个 链表的存储空间,不另外占⽤其他的存储空间。表中允许有重复的数据。 (3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计⼀个算法,⽤于求 出A与B的交集,并存放在A链表中。)
- [(3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计⼀个算法,⽤于求 出A与B的交集,并存放在A链表中。](#(3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计⼀个算法,⽤于求 出A与B的交集,并存放在A链表中。)
- [(4)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A 和B的差集(即仅由在A中出现⽽不在B中出现的元素所构成的集合),并以同样的形式存储, 同时返回该集合的元素个数。](#(4)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A 和B的差集(即仅由在A中出现⽽不在B中出现的元素所构成的集合),并以同样的形式存储, 同时返回该集合的元素个数。)
- [(5)设计算法将⼀个带头结点的单链表A分解为两个具有相同结构的链表B和C,其中B 表的结点为A表中值⼩于零的结点,⽽C表的结点为A表中值⼤于零的结点(链表A中的元素 为⾮零整数,要求B、C表利⽤A表的结点)。](#(5)设计算法将⼀个带头结点的单链表A分解为两个具有相同结构的链表B和C,其中B 表的结点为A表中值⼩于零的结点,⽽C表的结点为A表中值⼤于零的结点(链表A中的元素 为⾮零整数,要求B、C表利⽤A表的结点)。)
- [(6)设计⼀个算法,通过⼀趟遍历确定⻓度为n的单链表中值最⼤的结点。 (7)设计⼀个算法,将链表中所有结点的链接⽅向"原地"逆转,即要求仅利⽤原表的存储空 间,换句话说,要求算法的空间复杂度为O(1)。](#(6)设计⼀个算法,通过⼀趟遍历确定⻓度为n的单链表中值最⼤的结点。 (7)设计⼀个算法,将链表中所有结点的链接⽅向“原地”逆转,即要求仅利⽤原表的存储空 间,换句话说,要求算法的空间复杂度为O(1)。)
- [(7)设计⼀个算法,将链表中所有结点的链接⽅向"原地"逆转,即要求仅利⽤原表的存储空 间,换句话说,要求算法的空间复杂度为O(1)。](#(7)设计⼀个算法,将链表中所有结点的链接⽅向“原地”逆转,即要求仅利⽤原表的存储空 间,换句话说,要求算法的空间复杂度为O(1)。)
- [(8)设计⼀个算法,删除递增有序链表中值⼤于mink且⼩于maxk的所有元素(mink和maxk 是给定的两个参数,其值可以和表中的元素相同,也可以不同)。](#(8)设计⼀个算法,删除递增有序链表中值⼤于mink且⼩于maxk的所有元素(mink和maxk 是给定的两个参数,其值可以和表中的元素相同,也可以不同)。)
- [(9)已知p指向双向循环链表中的⼀个结点,其结点结构为data、prior、next三个域,写出 算法change(p),交换p所指向的结点及其前驱结点的顺序。](#(9)已知p指向双向循环链表中的⼀个结点,其结点结构为data、prior、next三个域,写出 算法change(p),交换p所指向的结点及其前驱结点的顺序。)
- [(10)已知⻓度为n的线性表A采⽤顺序存储结构,请写⼀个时间复杂度为O(n)、空间复杂 度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。](#(10)已知⻓度为n的线性表A采⽤顺序存储结构,请写⼀个时间复杂度为O(n)、空间复杂 度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。)
数据结构概念题复习
第一章
概念简述题
1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举⼀个数据结构的例⼦,叙述其逻辑结构和存储结构两个层次的含义及相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储⽅法实现?
第二章
算法设计题
(1)将两个递增的有序链表合并为⼀个递增的有序链表。要求结果链表仍使⽤原来两个链表 的存储空间,不另外占⽤其他的存储空间。表中不允许有重复的数据。
(2)将两个⾮递减的有序链表合并为⼀个⾮递增的有序链表。要求结果链表仍使⽤原来两个 链表的存储空间,不另外占⽤其他的存储空间。表中允许有重复的数据。 (3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计⼀个算法,⽤于求 出A与B的交集,并存放在A链表中。
(3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计⼀个算法,⽤于求 出A与B的交集,并存放在A链表中。
(4)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A 和B的差集(即仅由在A中出现⽽不在B中出现的元素所构成的集合),并以同样的形式存储, 同时返回该集合的元素个数。
(5)设计算法将⼀个带头结点的单链表A分解为两个具有相同结构的链表B和C,其中B 表的结点为A表中值⼩于零的结点,⽽C表的结点为A表中值⼤于零的结点(链表A中的元素 为⾮零整数,要求B、C表利⽤A表的结点)。
(6)设计⼀个算法,通过⼀趟遍历确定⻓度为n的单链表中值最⼤的结点。 (7)设计⼀个算法,将链表中所有结点的链接⽅向"原地"逆转,即要求仅利⽤原表的存储空 间,换句话说,要求算法的空间复杂度为O(1)。
(7)设计⼀个算法,将链表中所有结点的链接⽅向"原地"逆转,即要求仅利⽤原表的存储空 间,换句话说,要求算法的空间复杂度为O(1)。
(8)设计⼀个算法,删除递增有序链表中值⼤于mink且⼩于maxk的所有元素(mink和maxk 是给定的两个参数,其值可以和表中的元素相同,也可以不同)。
(9)已知p指向双向循环链表中的⼀个结点,其结点结构为data、prior、next三个域,写出 算法change§,交换p所指向的结点及其前驱结点的顺序。