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

这是一个目录

  • 数据结构概念题复习
    • 第一章
    • 第二章
      • [(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的数据元素。

相关推荐
passer__jw76721 分钟前
【LeetCode】【算法】283. 移动零
数据结构·算法·leetcode
Ocean☾27 分钟前
前端基础-html-注册界面
前端·算法·html
顶呱呱程序35 分钟前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
算法·matlab·音视频·matlab-gui·音频滤波·脉冲响应不变法
爱吃生蚝的于勒1 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~1 小时前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
王哈哈^_^1 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
星沁城1 小时前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
脉牛杂德2 小时前
多项式加法——C语言
数据结构·c++·算法
legend_jz2 小时前
STL--哈希
c++·算法·哈希算法
kingmax542120082 小时前
初三数学,最优解问题
算法