软考18-上午题-线性结构

一、线性结构

线性结构是一种逻辑结构。

特点:一个出度 + 一个入度(一个接一个排列)

1-1、线性表

最简单,最基本的线性结构。

定义:n(n >= 0)个元素的有限序列。

特点:

线性表的存储结构:

  • 顺序存储
  • 链式存储 

基本操作:插入、删除、查找。

1-1-1、线性表的顺序存储

一组地址连续的存储单元。如:数组

逻辑上相邻的两个元素,物理位置上也相邻。

  • 优点:随机存取;O(1)
  • 缺点:插入、删除需要移动元素。

表长为n的线性表中插入元素,等概率下,插入一个新元素需要移动的元素个数的数学期望:

E = n/2

表长为n的线性表中删除元素,等概率下,删除一个新元素需要移动的元素个数的数学期望:

E = (n-1)/2

1、插入操作的代码实现

在数组的第K个位置,插入元素x

时间复杂度:

2、删除操作的代码实现

删除数组第K个位置的元素

时间复杂度:

3、查找操作的代码实现

查找数组中第K个位置的元素 

1-1-2、线性表的链式存储

通过指针链接起来的节点存储元素

优点:

支持动态内存分配,结点空间需要的时候才申请,无需实现分配。

支持高效的插入、删除操作,时间复杂度为O(1)。

缺点:

不支持随机访问,需要从头节点开始遍历整个链表才能访问任意位置的元素。

特点: 

数据元素,逻辑上连续,物理上分开。

单链表 = 线性链表 

单链表分为:

  • 带头结点的单链表;
  • 不带头结点的单链表 

无论是否有头结点,头指针始终指向链表的第一个结点!!!

1、单链表的定义

或者:

2、单链表的插入操作

在链表list的位置K处,插入一个节点(K = 1,2,......list.length+1)

2-1、不带头结点

①不带头结点的链表,在表头插入结点

x->next = head;
head = x;

 ②不带头结点的链表,在表头以外的地方插入结点

x->next = p->next;
p->next = x;

P指向k-1的位置 

2-2、带头结点(推荐)

头结点:(可以看做第0个节点)

        在单链表的第一个结点之前附加一个结点,称为头结点。

        头结点的Data域可以不设任何信息,也可以记录表长等相关信息。 

①带头结点的链表,在任意位置插入结点(包括第一个位置)

x->next = p->next;
p->next = x;

【对比小结】:

        这个时候你会发现,不带头结点的链表的两种情况操作步骤不一样;而带头结点的两种情况操作步骤是一样的。

所以,带头节点的单链表的插入操作更加方便!!!

2-3、时间复杂度

代表头/不带表头的单链表,插入的时间复杂度:

  • 最好:O(1)——表头
  • 最坏:O(n)——表尾
  • 平均:O(n)

3、单链表的删除操作

删除第K个位置的节点

重点:找到k-1位置的节点,将k-1位置的节点指向k+1位置的节点

3-1、不带头结点

①删除第一个节点(k=1)

list = list.next;

②删除除了第一个节点以外的节点

Node s = p.next;
p.next = s.next;

 

3-2、带头结点

Node s = p.next;
p.next = s.next;
3-3、时间复杂度

带头结点/不带头结点的单链表,删除操作的时间复杂度

4、单链表的查找操作 
4-1、不带头结点

代码和带头结点的查询操作一样!!! 

 

4-2、带头结点

 

 

4-3、时间复杂度

带头结点/不带头结点的单链表,查询操作的时间复杂度

5、循环单链表
 

特点:

        可以从表中任意节点开始,遍历整个链表。

 

5-1、初始化

head.next = head;

 

 5-2、插入操作

尾指针,好处:

        可以直接通过尾指针,找到头结点。​​​​​​​

        在末尾(n+1)插入节点的时候,没有尾指针,则时间复杂度为O(n),若是有尾指针,则时间复杂度为O(1)。

但是在第n个位置插入节点时,还是时间复杂度为O(n)

6、双链表

 

特点:

        可以从表中任意的节点出发,从两个方向上,遍历链表。 

 

6-1、插入操作

插入到非第一个和非最后一个位置的节点。

 

s.front = p.front;
p.front.next = s;
s.next = p;
p.front = s;
6-2、删除节点

删除到非第一个和非最后一个位置的节点。

p.next = s.next;
s.next.front = p; 

二、真题

真题1:

单链表的查找时间复杂度(平均):O(n) 

真题2:

 

删除第K个节点,要先找到第k-1个节点。 (前一个节点)

真题3:

 

真题4:

顺序表:

 

单链表:

  • 查找:O(n)
  • 删除:O(n)
  • 插入:O(n)

 真题5:

真题6:

 

真题7:

 

真题8:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何读论文

如何读论文 0. 目的 单篇文章从头读到尾,可以; 世界上那么多篇文章, 都这样读, 时间上划不来。 适合你的文章就那么一小撮。 paper 的八股文结构: titleabstractintromethodexpconclusion 1. 第一遍 海选&#…

152基于matlab的GUI滚动轴承特征频率计算

基于matlab的GUI滚动轴承特征频率计算,输入轴承参数,包括转速,节圆直径、滚子直径、滚子数、接触角,就可得滚动特征频率结果,程序已调通,可直接运行。 152 matlab 轴承特征频率 GUI (xiaohongshu.com)

代码随想录 Leetcode222.完全二叉树的节点个数

题目&#xff1a; 代码&#xff08;首刷自解 2024年1月30日&#xff09;&#xff1a; class Solution { public:int countNodes(TreeNode* root) {int res 0;if (root nullptr) return res;queue<TreeNode*> deque;TreeNode* cur root;deque.push(cur);int size 0;w…

Shopee菲律宾选品:如何找到畅销产品并提高销售业绩

在电子商务行业中&#xff0c;产品的选择是取得成功的关键之一。对于在Shopee菲律宾平台上销售的卖家来说&#xff0c;找到畅销产品是至关重要的。本文将介绍一些有效的方法&#xff0c;帮助卖家在Shopee菲律宾平台上选择热销产品&#xff0c;并提高销售业绩。 先给大家推荐一…

【Linux】理解系统中一个被打开的文件

文件系统 前言一、C语言文件接口二、系统文件接口三、文件描述符四、struct file 对象五、stdin、stdout、stderr六、文件描述符的分配规则七、重定向1. 重定向的原理2. dup23. 重谈 stderr 八、缓冲区1. 缓冲区基础2. 深入理解缓冲区3. 用户缓冲区和内核缓冲区4. FILE 前言 首…

25考研|660/880/1000/1800全年带刷计划

作为一个参加过两次研究生考试的老学姐&#xff0c;我觉得考研数学的难度完全取决于你自己 我自己就是一个很好的例子 21年数学题目是公认的简单&#xff0c;那一年考130的很多&#xff0c;但是我那一年只考了87分。但是22年又都说是有史以来最难的一年&#xff0c;和20年的难度…

Entity实体设计

Entity实体设计 &#x1f4a1;用来和数据库中的表对应&#xff0c;解决的是数据格式在Java和数据库间的转换。 &#xff08;一&#xff09;设计思想 数据库Java表类行对象字段&#xff08;列&#xff09;属性 &#xff08;二&#xff09;实体Entity编程 编码规范 &#x1f4a…

谈谈BlueStore

目录 未完待续前言组成前期准备工作基础概念对象PextentextentBlobNode 线程事务磁盘的抽象与分配位图法分层位图 上电流程写流程读流程参考资料 未完待续 前言 BlueStore是什么&#xff1f; Ceph是一个统一的分布式存储系统。BlueStore是Ceph的存储引擎。 它的作用是什么&am…

【Go语言成长之路】引入外部包

文章目录 引入外部包一、查找需要引用的包二、引入需要导入的包三、运行程序 引入外部包 ​ 实现Demo: 引用rsc.io/quote包来实现打印输出 一、查找需要引用的包 ​ 比如说我现在想要找一个quote的包&#xff0c;那么可以通过如下步骤进行操作&#xff1a; 访问pkg.go.dev,并…

2024美赛数学建模E题思路分析 - 财产保险的可持续性

1 赛题 问题E&#xff1a;财产保险的可持续性 极端天气事件正成为财产所有者和保险公司面临的危机。“近年来&#xff0c;世界已经遭受了1000多起极端天气事件造成的超过1万亿美元的损失”。[1]2022年&#xff0c;保险业的自然灾害索赔人数“比30年的平均水平增加了115%”。[…

【Spring源码分析】推断构造方法

推断构造方法源码解析 一、确认候选构造——AutowireAnnotationBeanPostProcessor#determineCandidateConstructors二、autowireConstructor 方法源码解析三、总结 阅读此需阅读下面这些博客先【Spring源码分析】Bean的元数据和一些Spring的工具【Spring源码分析】BeanFactory系…

基于大数据的淘宝电子产品数据分析的设计与实现

&#xff08;1&#xff09;本次针对开发设计系统并设置了相关的实施方案&#xff0c;利用完整的软件开发流程进行分析&#xff0c;完成了设置不同用户的操作权限和相关功能模块的开发&#xff0c;最后对系统进行测试。 &#xff08;2&#xff09;框架可以帮助程序开发者快速构建…

Gson源码解读

一&#xff0c;概述 gson作为流行的json工具&#xff0c;笔者使用较多。本文主要目的是解读下Gson的源码实现&#xff0c;就没有然后了。 二&#xff0c;实例 实例如下图所示&#xff0c;笔者简单调用gson的toJson方法获得json字符串&#xff0c;fromJson则从json字符串解析…

Cmake语法学习2:常用变量

目录 1.常用变量简介 1.1提供信息的变量 1.2改变行为的变量 1.3描述系统的变量 ​编辑1.4控制编译的变量 2.提供信息的变量 2.1PROJECT_SOURCE_DIR 和 PROJECT_BINARY_DIR 2.2 CMAKE_SOURCE_DIR 和 CMAKE_BINARY_DIR 2.3CMAKE_CURRENT_SOURCE_DIR 和CMAKE_CURRENT_BIN…

【文件上传WAF绕过】<?绕过、.htaccess木马、.php绕过

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

【笔记】React Native实战练习(仿网易云游戏网页移动端)

/** * 如果系统看一遍RN相关官方文档&#xff0c;可能很快就忘记了。一味看文档也很枯燥无味&#xff0c; * 于是大概看了关键文档后&#xff0c;想着直接开发一个Demo出来&#xff0c;边学边写&#xff0c;对往后工作 * 开发衔接上能够更顺。这期间肯定会遇到各种各样的问题&a…

Qt 范例阅读: QStateMachine状态机框架 和 SCXML 引擎简单记录(方便后续有需求能想到这两个东西)

一、QStateMachine 简单应用&#xff1a; 实现按钮的文本切换 QStateMachine machine; //定义状态机&#xff08;头文件定义&#xff09;QState *off new QState(); //添加off 状态off->assignProperty(ui->pushButton_2, "text", "Off"); //绑定该…

025 break,continue,goto

什么是break for (int i 1; i < 10; i) {if(i 5){break;}System.out.println(i); } // 结果为 1 2 3 4 什么是continue for (int i 1; i < 10; i) {if(i 5){continue;}System.out.println(i); } // 结果为 1 2 3 4 6 7 8 9 关于goto关键字 String str ""…

2024年美国大学生数学建模竞赛(C题)探寻网球中的“动量”奥秘|DQN算法和Monte Carlo模拟建模解析,小鹿学长带队指引全代码文章与思路

我是小鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 探寻网球比赛中的“动量”奥秘&#xff01;鹿鹿学长独辟蹊径&#xff0c;运用强化学习与时间序列分析相结合&#xff0c;以DQN和Monte Carlo模拟实现对…

完整的 HTTP 请求所经历的步骤及分布式事务解决方案

1. 对分布式事务的了解 分布式事务是企业集成中的一个技术难点&#xff0c;也是每一个分布式系统架构中都会涉及到的一个东西&#xff0c; 特别是在微服务架构中&#xff0c;几乎可以说是无法避免。 首先要搞清楚&#xff1a;ACID、CAP、BASE理论。 ACID 指数据库事务正确执行…