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

这是一个目录

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

相关推荐
2401_8582861116 分钟前
CD21.【C++ Dev】类和对象(12) 流插入运算符的重载
开发语言·c++·算法·类和对象·运算符重载
梭七y39 分钟前
【力扣hot100题】(033)合并K个升序链表
算法·leetcode·链表
月亮被咬碎成星星43 分钟前
LeetCode[383]赎金信
算法·leetcode
嘉友1 小时前
Redis zset数据结构以及时间复杂度总结(源码)
数据结构·数据库·redis·后端
无难事者若执1 小时前
新手村:逻辑回归-理解03:逻辑回归中的最大似然函数
算法·机器学习·逻辑回归
IT从业者张某某1 小时前
机器学习-04-分类算法-03KNN算法案例
算法·机器学习·分类
chen_song_1 小时前
WebRTC的ICE之TURN协议的交互流程中继转发Relay媒体数据的turnserver的测试
算法·音视频·webrtc·交互·媒体
蒙奇D索大2 小时前
【数据结构】图解图论:度、路径、连通性,五大概念一网打尽
数据结构·考研·算法·图论·改行学it
uhakadotcom2 小时前
2025年春招:如何使用DeepSeek + 豆包优化简历,轻松敲开心仪公司的大门
算法·面试·github
小白狮ww2 小时前
Retinex 算法 + MATLAB 软件,高效率完成图像去雾处理
开发语言·人工智能·算法·matlab·自然语言处理·图像识别·去雾处理