【数据结构】——线性表的相关习题

目录

    • 题型一(线性表的存储结构)
    • 题型二(链表的判空)
    • 题型三(单链表的建立)
    • 题型四(顺序表、单链表的插入删除操作)
    • 题型五(双链表的插入删除操作)
    • 题型六(循环链表)

题型一(线性表的存储结构)

1、线性表的顺序存储结构是一种()存储结构。
A、顺序存取
B、随机存取
C、索引存取
D、散列存取

解析:(B)
顺序存储结构的可以实现随机存取,可以在O(1)内通过首地址和元素序号找到元素,每个元素占用最少的存储空间,其存储密度高,但只能使用相邻的一块存储单元,从而可能会产生较多的外部碎片。

2、一个顺序表所占的存储空间大小与()无关。
A、表的长度
B、元素的存放顺序
C、元素的类型
D、元素中各字段的类型

解析:(B)
顺序存储结构中把逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来体现,设sizeof(ElemType)是每个数据元素所占用的存储空间大小,即该顺序表的存储空间大小=表长×sizeof(元素类型),所以与元素的存放顺序无关。

3、若一个线性表最常用的操作是在表尾插入元素和删除表头元素,则采用()存储结构最节省时间。
A、仅有头指针的单链环
B、仅有尾指针的单链环
C、单链表
D、双链表

解析:(B)
单链表在插入/删除元素遍历寻找元素位置时,只能从表头遍历到表尾;虽然双链表可以来回遍历,但若在表尾插入/删除一个元素时仍需遍历整个链表;仅有头指针的单链环中,当在链表中的第一个位置进行插入/删除操作很方便,但若在表尾插入/删除一个元素时,也只能从表头遍历到表尾。

题型二(链表的判空)

1、单链表L(带头结点)和单链表L(不带头结点)为空的判断条件为()。
A、L==NULL,L ==NULL
B、L→next == NULL,L ==NULL
C、L→next != NULL,L ==NULL
D、L!= NULL,L ==NULL

解析:(B)
带头结点的单链表中,由于带有头结点,首先要通过malloc()函数分配一个头结点L,如下:

L=(LNode *)malloc(sizeof(LNode));		//分配一个头结点

当头结点之后暂时还没有任何结点,表示空链表,即L→next=NULL

不带头结点的单链表中,由于不带头结点,可直接将单链表置为空,即L ==NULL

2、双链表L(带头结点)和单链表L(不带头结点)为空的判断条件为()。
A、L==NULL,L ==NULL
B、L→next == NULL,L ==NULL
C、L→next != NULL,L ==NULL
D、L!= NULL,L ==NULL

解析:(B)
带头结点的双链表中,与带头结点和不带头结点的单链表一样,也是要先分配一个带头结点的单链表,所以其判断空表的条件一样,也是L→next=NULLL ==NULL
在这里插入图片描述

3、带头结点head的单向循环链表L为空的判断条件是()和不带头结点head的单向循环链表L为空的判断条件是()。
A、L ==NULL,L ==head→next
B、L ==L,L ==NULL
C、L ==head→next,L ==NULL
D、L ==NULL,L ==NULL

解析:(C)
循环单链表可以实现从任一个结点访问链表中的任何结点,在带头结点的循环单链表中,若L == head→next时,循环单链表为空;在不带头结点的循环单链表中,若L ==NULL时,循环单链表为空。

4、带头结点head的双向循环链表L为空的判断条件是()和不带头结点head的双向循环链表L为空的判断条件是()。
A、head→prior == head&&head→nex t ==head,head ==NULL
B、head ==NULL,head→prior == head&&head→nex t ==head
C、head ==NULL,head ==NULL
D、head→next=head→prior,head→next=head→prior

解析:(A)
带头结点的双向循环链表,若head→prior == head&&head→next ==head时,则该双链表为空。(即其头结点的prior和next域都指向其本身时为空)

不带头结点的双向循环链表,当head为空时,表明此双向循环无头结点链表为空,即head==NULL

题型三(单链表的建立)

1、对于一个具有n个元素的线性表,建立其单链表的时间复杂度为()。
A、O(1)
B、O(n)
C、O(log2n)
D、O(n2)

解析:(B)
单链表的建立过程是将每个结点逐个插入到单链表中,每次插入操作的时间复杂度为O(1),若单链表规模为n,所以建立单链表的时间复杂度为n×O(1)=O(n)。

题型四(顺序表、单链表的插入删除操作)

1、(填空)在一个长度为n的顺序表中第i个元素(1≤i≤n)之前插入元素时,需向后移动________个元素,删除第i个元素(1≤i≤n)需向前移动________个元素。

解析:n-i+1n-i

2、在顺序表中插入一个元素的时间复杂度为(),删除一个元素的时间复杂度为()。
A、O(n),O(1)
B、O(1),O(n)
C、O(1),O(1)
D、O(n),O(n)

解析:(D)
顺序表插入操作和删除操作实际上都是元素的移动,即在一个表长为n的顺序表中的i位置上操作和删除一个元素,需要进行元素移动的次数为n-i次,操作和删除操作的平均元素移动次数分别为n/2、(n-1)/2次,故时间复杂度都为O(n)

3、在单链表中在结点后插入一个结点的时间复杂度为()、在结点前插入一个结点的时间复杂度为()。
A、O(n),O(1)
B、O(1),O(n)
C、O(1),O(1)
D、O(n),O(n)

解析:(A)
后插操作,其时间开销主要在于查找第i-1个元素,即O(n),将新结点的指针域指向下一个结点,同时将该结点与前一个结点连接即可。

前插操作,也是将新结点的指针域指向下一个结点,该结点与前一个结点连接,然后通过一个中间变量将上一个结点的数据域与该结点交换即可,从而使时间复杂度达到O(1)

4、在单链表中删除第i个结点的时间复杂度为(),若将删除结点 * p的操作转换为删除结点 * p的后继结点来实现,其时间复杂度为()。
A、O(n),O(n)
B、O(1),O(n)
C、O(1),O(1)
D、O(n),O(1)

解析:(D)
删除结点操作也是主要在于查找第i-1个元素,即O(n)

若将删除结点 * p的操作转换为删除结点 * p的后继结点来实现,将下一个结点的指针域指向上一个结点,在交换数据域后,将* q结点从单链表中断开并释放该结点即可,这样的时间复杂度为O(1)

题型五(双链表的插入删除操作)

1、在一个双链表中,在p结点之后插入一个结点q的操作是()。
A、q→prior=p;p→next=q;p→next→prior=q;q→next=p→next
B、q→next=p→next;p→next=q;q→prior=p;p→next→prior=q
C、p→next=q;q→prior=p;q→next=p→next;p→next→prior=q
D、q→prior=p;p→next=q;q→next=p→next;p→next→prior=q

解析:(B)
如下图,操作①(q→next=p→next)、②(p→next=q)的目的是将要插入的结点q的prior、next域与两边的结点连接起来:
在这里插入图片描述

2、在一个双链表中,在p结点之前插入一个结点q的操作是()。
A、p→prior=q;q→next=p;p→prior→next=q;q→prior=p→prior
B、q→prior=p→prior;p→prior→next=q;q→next=p;p→prior=q→next
C、q→next=p;p→next=q;q→prior→next=q;q→next=p
D、p→prior→next=q;q→next=p;q→prior=p→prior;p→prior=q

解析:(D)
如下图,操作①(p→prior→next=q)、②(q→next=p)的目的是将要插入的结点q的prior、next域与两边的结点连接起来:
在这里插入图片描述

3、在一个双链表中,删除表中结点p的后继结点q的操作顺序是()。
①p→next=q→next;
②q→next→prior=p;
③free(q);
A、①②③
B、②①③
C、③②①
D、③①②

解析:(A)
如下图:
在这里插入图片描述

4、在一个双链表中,删除表中结点q的操作是()。
A、q→next→prior=q→prior;q→prior→next=q;free(q)
B、q→prior→next=q→next;q→next→prior=q→prior;free(q)
C、free(q);q→next→prior=q;q→next=q→next→next
D、free(q);q→next=q→prior→prior;q→prior=q→prior→prior

解析:(B)
如下图:
在这里插入图片描述

题型六(循环链表)

1、非空的循环单链表head的尾结点p满足()。
A、p→link == head
B、p→link == NULL
C、p == NULL
D、p == head

解析:(A)
当p指针的link域指向head头指针时表示p指针指向的元素是尾元素,即当p == head满足条件,如下图循环单链表:
在这里插入图片描述

2、在一个以h为头指针的双向循环链表中,指针p所指的元素是尾元素的条件是()。
A、p == h
B、h→rlink == p
C、p→llink == h
D、p→rlink == h

解析:(D)
当p指针的rlink域指向h头指针时表示p指针指向的元素是尾元素,即当p→rlink == h满足条件,如下图循环双链表:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/60509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ARM Coresight 系列文章 2.5 - Coresight 寄存器:PIDR0-PIDR7,CIDR0-CIDR3 介绍】

文章目录 1.1 JEDEC 与 JEP1061.2 PIDR0-PIDR7(peripheral identification registers)1.2 CIDR0-CIDR3(Component Identification Registers) 1.1 JEDEC 与 JEP106 JEDEC和JEP106都是来自美国电子工业联合会(JEDEC,Joint Electron Device Engineering C…

SpringBoot单元测试

目录 1.什么是单元测试? 2.单元测试有哪些好处? 3.Spring Boot单元测试使⽤ 单元测试的实现步骤 1. ⽣成单元测试类 2. 添加单元测试代码 2.1 .添加Spring Boot框架测试注解:SpringBootTest 2.2 添加单元测试业务逻辑 简单的断⾔说明 1.什么是单元测试? 单元测试(un…

分页Demo

目录 一、分页对象封装 分页数据对象 分页查询实体类 实体类用到的utils ServiceException StringUtils SqlUtil BaseMapperPlus,> BeanCopyUtils 二、示例 controller service dao 一、分页对象封装 分页数据对象 import cn.hutool.http.HttpStatus; import com.…

Python-flask项目入门

一、flask对于简单搭建一个基于python语言-的web项目非常简单 二、项目目录 示例代码 git路径 三、代码介绍 1、安装pip依赖 通过pip插入数据驱动依赖pip install flask-sqlalchemy 和 pip install pymysql 2.配置数据源 config.py DIALECT mysql DRIVER pymysql USERN…

SQL-每日一题【1164. 指定日期的产品价格】

题目 产品数据表: Products 写一段 SQL来查找在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10 。 以 任意顺序 返回结果表。 查询结果格式如下例所示。 示例 1: 解题思路 1.题目要求我们查找在 2019-08-16 时全部产品的价格,假设所…

关于java异常的整理

文章目录 一、异常分类二、throw、throws、try-catch-finally三、CglibAopProxy中对异常的处理4、关于UndeclaredThrowableException 一、异常分类 java异常层级结构 Throwable:所有异常的根接口 Error:严重错误,程序无法处理和恢复 例如VirtualMachineError,OOMError等 Excep…

【图像去噪】基于原始对偶算法优化的TV-L1模型进行图像去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

8.5作业

要求实现AB进程对话 a.A进程先发送一句话给B进程&#xff0c;B进程接收后打印 b.B进程再回复一句话给A进程&#xff0c;A进程接收后打印 c.重复1.2步骤&#xff0c;当收到quit后&#xff0c;要结束AB进程 A进程 #include<stdio.h> #include<string.h> #include&…

【新版系统架构补充】-七层模型

网络功能和分类 计算网络的功能 &#xff1a;数据通信、资源共享、管理集中化、实现分布式处理、负载均衡 网络性能指标&#xff1a;速率、带宽&#xff08;频带宽度或传送线路速率&#xff09;、吞吐量、时延、往返时间、利用率 网络非性能指标&#xff1a;费用、质量、标准化…

【Rust】Rust学习

文档&#xff1a;Rust 程序设计语言 - Rust 程序设计语言 简体中文版 (bootcss.com) 墙裂推荐这个文档 第一章入门 入门指南 - Rust 程序设计语言 简体中文版 第二章猜猜看游戏 猜猜看游戏教程 - Rust 程序设计语言 简体中文版 (bootcss.com) // 导入库 use std::io; use s…

2023.08.01 驱动开发day8

驱动层 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_irq.h> #include <linux/interrupt.h> #include <linux/fs.h> #include <linux/gpio.h> #include <linux/of_gpio.h>#…

NVM保姆级安装配置

nvm安装配置 1、NVM简介2、NVM安装三、NVM使用四、NVM常用命令 1、NVM简介 在项目开发过程中&#xff0c;使用到vue框架技术&#xff0c;需要安装node下载项目依赖&#xff0c;但经常会遇到node版本不匹配而导致无法正常下载&#xff0c;重新安装node却又很麻烦。为解决以上问…

Docker 网络模型使用详解 (1)Dockers网络基础

目录 环境准备 Dockers 网络基础 1.端口映射 查看随机映射端口范围 -p可以指定映射到本地端口 映射指定地址和指定端口 映射指定地址 宿主机端口随机分配 指定传输协议 端口暴露 容器互联 自定义网络 现在把container7加入到demo_net中 在启动一个容器加入到demo_net…

Linux进程(二)

文章目录 进程&#xff08;二&#xff09;Linux的进程状态R &#xff08;running&#xff09;运行态S &#xff08;sleeping&#xff09;阻塞状态D &#xff08;disk sleep&#xff09;深度睡眠T&#xff08;stopped&#xff09;状态X&#xff08;dead&#xff09;状态Z&#x…

数据结构 二叉树(C语言实现)

绪论 雄关漫道真如铁&#xff0c;而今迈步从头越。 本章将开始学习二叉树&#xff08;全文共一万两千字&#xff09;&#xff0c;二叉树相较于前面的数据结构来说难度会有许多的攀升&#xff0c;但只要跟着本篇博客深入的学习也可以基本的掌握基础二叉树。 话不多说安全带系好&…

关于 Ubuntu 长按 shift 无效, 按 Esc 直接进入 grub 改密码的解决方法

本次长按shift没有反应&#xff0c;直接进入了系统界面&#xff0c;所以改用长按Esc键&#xff0c;步骤如下&#xff1a; 1. 长按esc&#xff0c;进入grub>提示 2.输入grub>normal &#xff0c;回车 3.上一步回车后&#xff0c;继续敲击Esc &#xff0c;出现grub界面 …

HCIP---OSPF的优化

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.汇总&#xff1a; 目的&#xff1a;减少骨干区域的LSA的更新量 作用&#xff1a;OSPF的…

可缝合神经网络

文章目录 Stitchable Neural Networks摘要本文方法实验结果 Stitchable Neural Networks 摘要 包含大量强大的预训练模型族(如ResNet/DeiT)的model zoo已经达到了前所未有的范围&#xff0c;这对深度学习的成功有重要贡献。由于每个模型族都由具有不同尺度的预训练模型(例如&…

Linux 匿名页的生命周期

目录 匿名页的生成 匿名页生成时的状态 do_anonymous_page缺页中断源码 从匿名页加入Inactive lru引出 一个非常重要内核patch 匿名页何时回收 本文以Linux5.9源码讲述 匿名页的生成 用户空间malloc/mmap(非映射文件时&#xff09;来分配内存&#xff0c;在内核空间发生…

Docker实战-关于Docker镜像的相关操作(二)

导语   之前的分享中&#xff0c;我们介绍了关于Docker镜像的查询操作相关的内容&#xff0c;下面我们继续来介绍删除清理、导入导出、创建镜像等操作。 如何删除和清理镜像&#xff1f; 使用标签删除镜像 可以使用docker rmi 或者是 docker image rm 命令来删除镜像&#x…