【数据结构】 第一章+第二章 课后习题概念+算法设计题

这是一个目录

  • 数据结构概念题复习
    • 第一章
    • 第二章
      • [(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所指向的结点及其前驱结点的顺序。


(10)已知⻓度为n的线性表A采⽤顺序存储结构,请写⼀个时间复杂度为O(n)、空间复杂 度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。

相关推荐
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
C++----------函数的调用机制
java·c++·算法
唐叔在学习1 小时前
【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析
数据结构·算法·排序算法
ALISHENGYA2 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
chengooooooo2 小时前
代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
算法·leetcode·职场和发展
jackiendsc2 小时前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
游是水里的游3 小时前
【算法day20】回溯:子集与全排列问题
算法
yoyobravery3 小时前
c语言大一期末复习
c语言·开发语言·算法
Jiude3 小时前
算法题题解记录——双变量问题的 “枚举右,维护左”
python·算法·面试
被AI抢饭碗的人3 小时前
算法题(13):异或变换
算法