数据结构---第二章线性表---线性表的定义和基本操作+线性表的顺序表示+线性表的链式表示---选择题

单链表的原地排序(最小空间时间复杂度)——司 单链表原地排序(最小空间时间复杂度) 这里我们用插入排序的思想进行单链表的排序 代码如下: void List_sort(link &head){ link q, p, s; q = head; p = head->next->next;//从第二个结点开始遍历 head->next->next = NULL; //从第一个结点后断开 while (p != NULL){ s = p;//用s来保存p p = p->next;//p遍历下一个 wh 阅读详情

1什么是线性表?

线性表是由具有相同类型的有限数据元素组成的,数据元素是由数据项组成的。
数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录就是一个数据元素,它由学号,姓名,性别等数据项组成。
线性表是具有n个数据元素的有限序列。

2若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为了提高效率,应采用顺序表的存储方式。

顺序表可以按照序号进行随机存取,时间复杂度为O(1)。

3n个元素的线性表的数组表示中,时间复杂度是怎么样的?

(1)访问第i(1<=i<=n)结点和求第i(2<=i<=n)个结点的直接前驱。该操作时间复杂度为O(1)。

每个数据元素的存储位置和线性表的起始位置相差一个和该数据元素的位序成正比的常数,因此,线性表中的任一数据元素可以随机存取,所以线性表的顺序结构是一种随机存取的数据结构。

(2)在最后一个结点后面插入一个新的结点。该操作时间复杂度为O(1)。

查找最后一个结点时间复杂度为O(1),插入之后不需要移动元素,因此该操作的时间复杂度就是查找最后一个结点的时间复杂度O(1)。

(3)删除第一个结点。该操作的时间复杂度为O(n)。

删除顺序表L中第i个元素的位置,并将第i+1个元素及其后的所有元素前移一个位置。
删除表尾元素(即i=n),无需移动元素,时间复杂度为O(1)。
删除表头元素(即i=1),需移动出表头元素外的所有元素,时间复杂度为O(n)。

(4)在第i个结点后面插入一个元素。该操作时间复杂度为O(n)。

在这里插入图片描述

4顺序表和链表的交换操作

顺序表仅需要三次。
如果要把1234掉换成1324该如何操作?
定义三个指针*p,*p1,*p2分别指向123的位置。
即 p=head; p1=p->next; p2=p1->next;

p->next=p2;//原本p是指向p1的,也就是1后面是2,现在p指向p2了,也就是1后面是3

p1->next=p2->next;//原本p1是指向p2的,也就是2的后面就是3,现在p1指向p2的后继,就是说2的后面是4。

p2->next=p1;//原本3的后面是4,现在3的后面是2。

这说明顺序表和链表的交换次数是一样的,都是3次,但查找的时间复杂度必然不同。

5若长度为n的非空线性表采用顺序存储结构,在表的第i个位置插入一个数据元素,则i的合法值为1到n+1。

线性表中元素的位序是从1开始的,而数组中元素的下标是从0开始的。
可以在表头插入i=1,也可以在表尾插入,i=n+1。

6什么是静态链表?

静态链表是借助数组来描述线性表的链式存储结构,结点也有数据域data和指针域next,与一般链表中的指针不同的是,这里的指针是结点的相对地址(数组下标),又称游标。和顺序表一样,静态链表也要预先分配一块连续的内存空间。
静态链表中指针表示的是下一个元素在数组中的位置。
静态链表以next==-1作为其结束的标志。静态链表的插入,删除操作与动态链表的相同,只需要修改指针,而不需要移动元素。
静态链表和一般链表的主要区别是需要分配较大空间。

7给定有n个元素的一维数组,建立一个有序单链表的最低时间复杂度是O(nlog2n)。

快速排序,堆排序,二路归并排序平均情况下的时间复杂度为O(nlog2n)。其他的比它们都要慢,所以得出结论:
数组排序最好的时间复杂度为O(nlog2n)。
建立一个单链表所需的时间复杂度为O(n)。
综上所述,总时间复杂度为O(nlog2n)。

8头结点和头指针有什么区别,为什么要设置头节点?

通常用头指针来标识一个单链表,如单链表L,头指针为null时表示一个空表。此外,为了操作上的方便,在单链表第一个结点之前附加一个结点,称为头结点。头结点的数据域可以不设任何信息,也可以记录表长等信息。头结点的指针域指向线性表的第一个元素结点。
头结点与头指针的区分:不管带不带头结点,头指针都始终指向链表的第一个结点,而头结点是带头结点的链表中的第一个结点,结点内通常不存储信息。
(1)由于第一个数据结点的位置被存放在头结点的指针域中,因此在链表的第一个位置上的操作和在表的其他位置上的操作一致,无需进行特殊处理。
(2)无论链表是否为空,其头指针都指向头结点的非空指针(空表中头结点的指针域为空),因此空表和非空表的处理也就得到了统一。
对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是
head->next=null
对于不带头结点的单链表,判定空表的条件是head=null。

9在一个长度为n的带头结点的单链表h上,设有尾指针r,则执行什么操作与链表的表长有关?

这是因为删除单链表的最后一个结点需置其前驱节点的指针域为null,需要从头开始依次遍历找到该前驱节点,需要O(n)的时间,也就和表长有关。

10一个链表最常用的操作是在末尾插入结点和删除结点,则选用什么结构最节省时间?

(1)这里可以选用带尾指针的单循环链表吗?

在末尾插入结点的话需要更改末尾结点的next,这个操作可以使用尾指针轻松的完成,但是在末尾删除结点的话,需要找到倒数第二个结点的next,这个操作无法用尾指针轻松的实现,还需要从头部开始遍历。

(2)这里使用带头结点的双循环链表最节省时间

11对于既有头结点指针,又有尾结点指针的循环单链表而言,可以很轻松的实现下述操作:

删除第一个元素,在第一个元素之前插入新元素,在最后一个元素之后插入新元素,但它不方便删除最后一个元素。

12某线性表用带头结点的循环单链表存储,头指针为head,当head->next->next=head成立时,线性表长度可能是0或1。

首先,我们要了解一下带头结点的循环单链表的一些基础知识。
如果说这个循环单链表为空的话,那就是只有头结点head->next=head,因为它是循环的吗,就一个结点绕成一个圈,没什么问题。继续推理得到
head->next->next=head->next=head
如果说这个循环单链表有一个元素,那么head->next-next=head没什么问题。

算法与数据结构课后习题第二章 第2章-线性表-作业 一、单选题(共18题,90分) 1. 根据教科书中线性表的实现方法,线性表中的元素必须是( )。 A. 整数类型 B. 字符类型 C. 相同类型 D. 结构类型 我的答案: C正确答案: C答案解析:线性表的概念 2. 线性表的顺序存储结构是一种( )的存储结构。 A. 随机存取 B. 顺序存取 C. 索引存取 D. Hash存取 我的答案: A正确答案: A答案解析:顺序存储结构 3. 对于顺序表的优缺点,以下说法错误的是( )。 A. 无需为表示结点间 阅读详情

相关推荐

考研数据结构————第二章:线性表

2021考研的第二章:线性表!!!冲冲冲 文章目录第二章 线性表2.1 线性表的定义和基本操作2.1.1 线性表的定义2.1.2 线性表的基本操作2.2 线性表的顺序表示2.2.1 顺序表的定义2.2.2 顺序表上基本操作的实现2.2.3本章习题 第二章 线性表 【考纲的内容】 (一)线性表的定义和基本操作 (二)线性表的实现 (三)顺序存储:链式存储;线性表的应用 【知识框架】 2.1 线性表的定义和基本操作 2.1.1 线性表的定义 线性表是具有相同数据类型的n(你>=0)个数

Belief的博客 4300

第二章线性表选择题有关问题

王道考研第二章线性表选择题有关问题

海风依旧 1万+

数据结构第二章——线性表

线性表是数据结构这门课的基础,可以说是最重要的一个章节。学习这一章节之前应该学习了一定的C语言知识,至少能够看懂教材里面的伪代码。从本节起,分析数据结构将从数据结构的三要素展开(逻辑结构、存储结构、运算)提示:以下是本篇文章正文内容,下面案例可供参考由n个(n>=0)个数据特性相同的元素所构成的有限序列。(注意是有限长)循环链表有两种,一种是循环单链表,另一种是循环双链表,循环单链表就是在单链表的基础上将尾结点的指针域指向头结点;

2301_78118751的博客 1140

2019.03.03 学习笔记

1. 对于多种不同类型的数据进行混合运算,最终会转换成最高的。 解析:int&lt;float&lt;double 2.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较()个结点。 解析:最少1次,最多n次,平均n/2次。 3.双向链表和循环双向链表,如下图所示: 4.二叉排序树的性质:二叉排序树,又叫二叉查找树,它或...

hello_dlut的博客 564

【数据结构】第二章:线性表

线性表(Linear List)线性表(Linear List)是由同类型数据元素构成的有限序列。在数学上,它表示为: L ={a1, a2, a3, …, an其中{a1, a2, a3, …, an} 是数据元素,( n ) 为线性表的长度。当 ( n = 0 ) 时,线性表为空表。举个例子:假设有一个线性表 L = [10, 20, 30, 40, 50]10 的直接后继是 20,10 没有直接前驱。20 的直接前驱是 10,直接后继是 30。

小源同学的博客 1238

408_第二章_线性表

408_第二章_线性表

qq_45880554的博客 4660

数据结构第二章——线性表的链式表示

线性表的链式表示,包括单链表及其操作、双链表、循环链表、静态链表

cwb296的博客 2240

《数据结构》知识点汇总+算法代码总结【全】

写在前面:本文写于吴签时期,在家备考时刷完数据结构王道书之后想着把书中重点梳理汇总一下。本文内容包括但不局限于王道数据结构每章的知识点及其课后习题所涵盖的知识点。本人曾在大三期间打过一些程序设计类比赛,所以本文所涉及到的代码不一定局限于王道书,但思想都一样。 期末复习和备考408均可使用第一章:绪论(不在考研大纲但很重要)第二章:线性表第三章:栈和队列第四章:串第五章:树与二叉树第六章:图第七章:查找 第一章:绪论(不在考研大纲但很重要) 数据结构三要素:逻辑结构、存储结构、数据的运算;其中逻辑结构包括线

qq_44622401的博客 17万+

《数据结构》| 第二章 线性表 知识梳理

线性表 目录 线性表 1.掌握线性表的定义、逻辑结构及其抽象数据类型等基本概念。 2.重点掌握线性表的两种存储结构(顺序存储、链式存储)。 顺序存储: 链式存储!!! 结点 3.掌握顺序表的各种操作(插入、删除等)实现及算法复杂度。 4.掌握单链表的各种操作(插入、删除等)实现及算法复杂度。 5.理解带头结点的单链表的头结点的作用。 6.了解循环单链表...

12 26 25 的博客 6万+

数据结构—线性表的定义与基本操作【插入、删除、查找】

线性表:是一种最常用、最简单,也是最基本的数据结构。 线性表是由n(n>= 0)个数据元素所构成的有限序列,且数据类型相同。 线性表中数据元素之间具有一种线性的或“一对一”的逻辑关系。线性表是一种线性结构。 线性表可以用顺序存储和链式存储两种存储结构来表示。...

四季轮换叶,一路招摇胜 8959

新手也能玩转!用Panosim+MATLAB/Simulink搭建你的第一个智能驾驶仿真场景(保姆级图文)

本文为新手提供了使用Panosim和MATLAB/Simulink搭建智能驾驶仿真场景的详细教程。从环境准备、基础场景创建到仿真模型构建,一步步指导用户完成第一个智能驾驶仿真项目,帮助零基础用户快速上手并体验智能驾驶仿真的乐趣。

weixin_29090089的博客 185

《数据结构》-第二章 线性表(知识点总结)

写在前面的话: 适应范围:《数据结构》复习总结系列适用于考研、期末考试、考前复习,小白新手 本系列参考书目: 《数据结构:c语言版》(严蔚敏) 关于写这个系列的原因:本人今年考研上岸,加上在校期间学习《数据结构》这门课时候,对数据结构有了好感,对这门课考试的考点把握还不错,所以不想荒废自己的知识,就计划用这种方式总结起来。如果有理解不到位的地方,欢迎在评论指出。我会尽量把知识点讲清楚后,按照考点进行总结。这个系列计划按照知识点总结后+考点总结,同时配有少部分习题(之...

大家一起进步叭 5497

(OpenCV)图像目标尺寸检测

  本文翻译自pyimagesearch技术博客上的一篇文章,《Measuring size of objects in an image with OpenCV》,原文作者:Adrian Rosebrock 。 https://www.pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv...

明柳梦少的博客 7万+

02专升本数据结构笔记 第二章:线性表

线性表是由n(n≥0)个类型相同的数据元素a1,a2,…,an组成的有限序列,数据元素之间是一对一的关系,记作(由n(n≥0)个类型相同的数据元素,组成的有限序列,数据元素之间是一对一的关系,为线性表)可以理解为有序数组。

lxttzlove的博客 2349

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 115

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 272

数据结构线性表

文章目录二、线性表2.1、线性表的定义和特点2.2、案例引入2.3、线性表的类型定义2.4、线性表的顺序表示和实现2.4.1、线性表的顺序表示2.4.2、顺序表中基本操作的实现2.5、线性表的链式表示和实现2.5.1、单链表的定义和表示2.5.2、单链表基本操作的实现2.5.3、循环链表2.5.4、双向链表2.6、顺序表和链表的比较2.7、线性表的应用2.8、案例分析与实现第二章小结第二章习题   二、线性表 伪码书上讲的也很详细,笔记中就不再打了。 2.1、线性表的定义和特点 由n (n≥0)个

chongyang_的博客 3万+

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

yilvyangguang520的博客 3997

数据结构第二章-线性表(详细知识点总结)

第二章 线性表 【考纲内容】 (一)线性表的定义和基本操作 (二)线性表的实现 顺序存储;链式存储;线性表的应用 【框架】 2.1 线性表的定义和操作 2.1.1 线性表的定义 线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时,线性表是一个空表。若用L命名线性表,则其一般表示为                &nbs

疯子书生的博客 2万+

015、架构_配置文件_管理节点(proxymanager.ini)

该配置文件中的参数在后台配置,两种生效方式:*所有参数重启生效。*部分参数可以使用工具dbtool动态生效。动态生效命令为:dbtool-pm-load-config。配置文件“proxymanager.ini”用于设置元数据管理模块的信息。文件路径为“~/etc”。配置文件“proxymanager.ini”是普通的文本文件。默认值proxymanager-alarmconfutf8.txt。配置错误或不配置,PM无法连接MDS,无法服务。获取元数据失败超时处理时间。异常时请求启动对等回滚。

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 331

【PCB专题】Allegro导出3D文件

Allegro中如何导出3D文件,有没有一键导出操作?

一点硬件 4990

第二章 线性表 线性表的链式表示和实现

2.3 线性表的链式表示和实现 由于顺序表的插入、删除操作需要移动大量的元素,影响运行效率,因此引入了线性表的链式存储。链式存储线性表时,不需要使用地址连续的存储单元,即它不要求逻辑上相邻的两个元素在物理位置上也相邻,这里使用指针来表示逻辑间的关系。 ### 2.3.1 单链表的定义 线性表的链式存储又称为单链表,它是指通过一组任意的存储单元来存储线性表种的数据元素。为了建立数据元素之间的线性关系,除了存储元素自身的信息之外,还存放一个指向其后继节点的指针。

一起加油 4631

IPCP(IP Control Protocol,IP控制协议)

IPCP(IP Control Protocol,IP控制协议)

天赐好车的博客 758

408《数据结构》——第二章:线性表

线性表(Linear List)是具有相同数据类型的n (n ≥ 0)个数据元素的有限序列。。关键特性:元素个数有限。所有元素属于同一数据对象。元素之间存在严格的顺序关系。存在唯一的“第一个”元素(表头元素,无直接前驱)。存在唯一的“最后一个”元素(表尾元素,无直接后继)。除表头和表尾元素外,每个元素aᵢ(1 < i < n) 都有且仅有一个直接前驱aᵢ₋₁和一个直接后继aᵢ₊₁。一对一的线性关系。是线性结构的典型代表。基本操作(ADT定义的核心):构造一个空的线性表L。

jiaomongjun的博客 1521

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数据结构(C语言第2版) 课后习题答案之第二章 线性表

目录 第二章 线性表 1.选择题 (1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。 (2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( )。 (3)向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为( )。 (4)链接存储的存储结构所占存储空间( )。 (5)线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。 (6)线性表L在( )情况下适用于使用链式结构...

Yummy的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数据结构第二章——线性表的定义和特点

数据结构第二章——线性表的定义和特点 线性表的定义和特点 线性表是具有相同特性的数据元素的一个有限序列 其中数据元素的个数n定义为表的长度 当n = 0时称为空表 线性表的逻辑特征: 在非空的线性表,有且仅有一个开始结点a1,他没有直接前驱,儿仅有一个直接后继a2 有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前驱an-1 其余的内部结点ai(2 <= i <= n - 1)都仅有一个直接前驱ai-1和一个直接后继ai+1 线性表的顺序存储表示 线性表的顺序表示又称为顺序存储

haust_允谦的博客 9699

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 数据结构---第一章绪论---算法和算法评价
下一篇: 高等数学---第三章微分中值定理及导数应用---极值问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值