【数据结构】顺序表
一、顺序表的基本概念
1.1 概念
顺序表是一种线性表的存储结构,其特点是:使用一段连续的存储空间存储线性表中的数据元素,通过数组实现,具有随机访问的能力。
可以把顺序表直接理解为数组,只不过这个数组里可以存各种类型的数据。
- 连续存储:顺序表在内存中占用一段连续的地址空间。假设有数组a,a[2] 的地址加1一定为a[3]。
- 随机访问:顺序表支持通过下标访问元素。不用从头到尾遍历数组,通过下标访问的时间复杂度为O(1)。
2.2 分类
顺序表有静态顺序表和动态顺序表之分。静态就是固定长度的数组,动态数组可以根据数据多少进行动态开辟。
静态顺序表👇
//顺序表的大小
#define N 100
//可更改存储的数据的类型
typedef int SLDataType;typedef struct SeqList
{SLDataType array[N];size_t size;
}SeqList;
每次运行为数组开N个大小的空间,此时如果只有几个数据就会造成空间的浪费,但是如果有超过N的数据个数,无法存储,虽然里面也可以进行空间的动态开辟,但还是比较麻烦,不如直接用动态顺序表。(平时小作业或者OJ可以用静态的比较简单直接)。
二、动态顺序表的基本操作
以下部分就基于动态顺序表的增删查改进行一步步实现和完善。
主要包括:
1.顺序表结构定义
2.顺序表的初始化和销毁
3.顺序表的扩容
5.顺序表的打印
6.顺序表元素的查找
7.顺序表元素的插入(尾插,头插,在pos位置插入)
8.顺序表元素的删除(头删,尾删,删除pos位置元素)
9.顺序表元素的修改
2.1 顺序表的结构定义
在C语言中,顺序表可以用结构体结合数组实现,结构体通常包含:数组 data 用于存储顺序表中的数据元素; size 记录此时顺序表中的元素个数; capacity 表示该顺序表的容量。
-- 容量并不等于元素个数,capacit >= size 。
-- 顺序表可以存各种类型的元素,所以可以typedef一个SLDataType记录方便修改需存储的数据类型。
-- struct SeqList 太长,可以typedef为 SL
//存储的数据类型
typedef int SLDataType;typedef struct SeqList
{SLDataType* data;//数据元素个数int size;//顺序表容量int capacity;
}SL;
2.2 初始化
对于动态顺序表需要在初始化时分配一段内存空间(也可以=NULL,但还是开了空间比较好,开了空间就要检查),供存储数据使用,确保使用前的状态合法。对于元素个数和容量也需要赋初值,已确保之后的正确访问与使用。(初始化就是申请一块空间并清理,销毁是归还这块空间,释放后就不能正常访问这块空间了。)
而且这个结构体只是一个数据类型,之后创建的每个结构体变量都是独立的。调用的函数也只对那一个结构体变量生效。函数要改变变量,就需要传入指针。
void SLInit(SL* ps)
{assert(ps);ps->data = (SLDataType*)malloc(sizeof(SLDataType) * 4);//没有初始化成功,程序异常,退出if (ps->data == NULL){perror("malloc failed");exit(-1);}ps->size = 0;ps->capacity = 4;
}
2.3 销毁
释放动态分配的资源,防止内存泄漏,避免非法操作。
void SLDestroy(SL* ps)
{assert(ps);free(ps->data);ps->data = NULL;ps->size = 0;ps->capacity = 0;
}
2.4 尾插
顺序表的尾插还是比较方便的,直接在最后一个元素的后面插入新元素,再将size++。不过要考虑顺序表的容量是否足够,不足要扩容。
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);ps->data[ps->size] = x;ps->size++;
}
2.5 扩容
因为有好几个插入的函数,需要检查是否需要扩容,可以直接把检查和扩容一起做了。
在使用relloc扩容时,最好使用临时变量tmp。如果扩容失败,返回NULL被直接赋值给data,导致原数据丢失。
tmp不需要被释放,因为他只是一个指针变量,并没有存有效数据,而且他只是一个局部变量,出了作用域就销毁了。
也不需要free(a),realloc的扩容成功会出现两种情况,原地扩和异地扩,也不用考虑如果出现的是异地扩是否需要释放原来的data数据。因为realloc在扩容成功时会自动释放旧内存。
2.6 打印
为了方便观察顺序表的内容可以创建一个打印的函数。
void SLPrint(SL* ps)
{assert(ps);for (int i = 0; i < ps->size; i++){printf("%d ", ps->data[i]);}printf("\n");
}
2.7 尾删
尾删就是从尾部删除一个数据,只要size--就行了(因为我们去访问使用的时候都是依据size的,不需要抹除数据,不需要修改,更不能释放),capacity也不会改变。但是要注意只有size>0的时候,才可以实现尾删。 也可以使用 if(ps->size == 0) return;
void SLPopBack(SL* ps)
{assert(ps->size);ps->size--;
}
2.8 头插
顺序表的缺点之一就是插入删除的时间复杂度大,特别是头插,头删,需要挪动数据覆盖。
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);//往后挪动覆盖数据int end = ps->size - 1;while (end >= 0){ps->data[end + 1] = ps->data[end];--end;}ps->data[0] = x;ps->size++;
}
2.9 头删
-- 删掉最前面一个元素。其实只要把所有元素都往前覆盖一个就好了。注意检查size是否>0。如果不检查看起开可能没什么问题,但是size有可能会变成负数,这是不行的。
-- 头删不能直接data++,看似没有问题,释放的时候会出错,释放时要从申请的头指针开始释放。
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size);int start = 0;//往前覆盖数据while (start < ps->size - 1){ps->data[start] = ps->data[start + 1];start++;}ps->size--;
}
2.10 pos位置插入
pos一般表示的是下标,一般配着查找使用。pos有范围,>=0 && <=size 。和头插的代码有些相似。
其实头插、头删、尾插、尾删可以直接复用在pos位置插入和在pos位置删除的代码。
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);SLCheckCapacity(ps);int end = ps->size - 1;while (end >= pos){ps->data[end + 1] = ps->data[end];--end;}ps->data[pos] = x;ps->size++;
}
2.11 删除pos位置
和头删也是相似的。
void SLErase(SL* ps, int pos)
{assert(ps);assert(ps->size && pos >= 0 && pos <= ps->size);int start = pos;while (start < ps->size - 1){ps->data[start] = ps->data[start + 1];start++;}ps->size--;
}
2.12 查找
找到返回下标,否则返回-1;
int SLFind(SL* ps, SLDataType x)
{assert(ps);for (int i = 0; i < ps->size; i++){if (ps->data[i] == x)return i;}return -1;
}
2.13 修改
修改能不能直接 `s3.a[3] = 6;` 直接访问。
(这样确实是可以的,但是数据结构原则,不要轻易去直接访问数据,非常的不安全)
- 假如有一天写了一个这样的代码↓,但是输入的时候输入的是0 100,就会发生错误,因为此时scanf输入两个数据需要用逗号隔开,而我们没注意:
```
int pos = 0;
int x = 0;
scanf("%d,%d", &pos, &x);
s3.a[pos] = x;
```
- 其次,如果通过函数去操作就会有各种检查,越界会明确告诉你,但是直接访问报错就需要一步一步调试可能才知道错误。
- 函数也更容易看出接口
void SLModify(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos >= 0 && pos < ps->size);ps->data[pos] = x;
}
2.14 菜单
为了让这个顺序表可读性更高,更具有操作性,可以设置一个菜单。
void menu()
{printf("*************************************************\n");printf("**************请选择相应操作的数字***************\n");printf("1、尾插 2、头插\n");printf("3、在指定位置插入 4、在指定位置删除\n");printf("5、头删 6、尾删\n");printf("7、查找 8、修改\n");printf("9、打印 \n");printf("-1退出\n");printf("***********************************************\n");
}int main()
{SL s1;SLInit(&s1);//选项默认为0int option = 0;do{menu();scanf("%d", &option);if (option == 1){printf("请依次输入你要插入的数据个数和数据:\n");int n = 0;int x = 0;scanf("%d", &n);assert(n > 0);for (int i = 0; i < n; ++i){scanf("%d", &x);SLPushBack(&s1, x);}}else if (option == 2){printf("请依次输入你要插入的数据个数和数据:\n");int n = 0;int x = 0;scanf("%d", &n);assert(n > 0);for (int i = 0; i < n; ++i){scanf("%d", &x);SLPushFront(&s1, x);}}else if (option == 3){printf("请依次输入你要插入的数据位置下标和数据:\n");int pos = 0;int x = 0;scanf("%d", &pos);scanf("%d", &x);SLInsert(&s1, pos, x);}//省略一部分...else if (option == 9){SLPrint(&s1);}} while (option != -1);SLDestroy(&s1);return 0;
}
三、完整代码
以上顺序表完整代码,可点击👉数据结构: 手搓数据结构 - Gitee.com👈查看。
-THE END-
相关文章:
【数据结构】顺序表
一、顺序表的基本概念 1.1 概念 顺序表是一种线性表的存储结构,其特点是:使用一段连续的存储空间存储线性表中的数据元素,通过数组实现,具有随机访问的能力。 可以把顺序表直接理解为数组,只不过这个数组里可以存各种类…...
光伏与储能软件有哪些?
随着技术的不断进步,光伏与储能的软件系统也层出不穷,为这一领域的发展提供了强有力的支持。 一、光伏设计软件 1、PVSyst 功能:这是一款全球广泛使用的光伏系统设计软件,支持光伏系统的模拟与设计,包括组件阵列、倾…...
AI周报(12.1-12.7)
AI应用-AI独立开发“小猫补光灯” 无论GitHub Copilot、Amazon CodeWhisperer,还是前面AI周报(6.23-6.29)Devv.ai,重在提高编码效率、提供编码补全和建议。小猫补光灯第一次让一个完全不会编程的产品经理,与AI协作&…...
windows 脚本批量管理上千台服务器实战案例
如果你们有接触服务器,都是知道服务器有BMC管理界面的,这几天我在做项目中,需要不断的开关机服务器,如果一两台服务器登录BMC界面重启服务器还好,如果服务器数量非常的庞大,成百上千台,我们不可…...
一级路由访问家里的二级路由设备 例如nas
家里升级千兆网,更换了光猫设备,家里走网线的话,只有100m速度,就直接用了光猫的无线,这次换的很顶,下载和打游戏也够用了,基本上没有网络波动。就客厅用了一个路由器,接了nas和摄像头…...
线程(二)——线程安全
如何理解线程安全: 多线程并发执行的时候,有时候会触发一些“bug”,虽然代码能够执行,线程也在工作,但是过程和结果都不符合我们的开发时的预期,所以我们将此类线程称之为“线程安全问题”。 例如ÿ…...
Altium Designer学习笔记 31 PCB布线优化_GND处理
基于Altium Designer 23学习版,四层板智能小车PCB 更多AD学习笔记:Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…...
第四节、电机定角度转动【51单片机-TB6600驱动器-步进电机教程】
摘要:本节介绍用电机转动角度计算步骤,从而控制步进电机转角 一、 计算过程 1.1 驱动器接收一个脉冲后,步进电机转动一步,根据驱动器设置的细分值 计算一个脉冲对应电机转动的角度step_x s t e p x s t e p X … … ① step_{x…...
亚马逊云科技用生成式AI,向开发的复杂性动手了
生成式 AI、分布式扩展功能全面进化,还降价了。 同一天的发布,完全不同的方向。 今天凌晨,云计算巨头亚马逊云科技的 re:Invent 与大号创业公司 OpenAI 的发布「撞了车」。后者公布了一系列生成式 AI 应用,价格更贵、性能更强大&a…...
SharpDevelop IDE IViewContent.cs类
文件位置:IViewContent.cs /// <summary>/// IViewContent is the base interface for "windows" in the document area of SharpDevelop./// A view content is a view onto multiple files, or other content that opens like a document/// (e.…...
【工具变量】地级市城市全社会用电量数据(2006-2021年)
一、数据范围:覆盖中国300多个地级市 二、包含指标: 省份、地级市、年份、全社会用电量。 三、数据来源:国家电网查询数据。对于极大部分城市,国网售电量就是全社会用电量(往年的售电量和全社会用电量数据相同),此外…...
vue列表滚动动画效果
一、效果展示: 录屏2024-12-07 02.16.59 二、步骤: 1. 需要用<transition-group>包裹需要渲染的item列表 ⚠️注意:这里的:key"item.id",必须要用id之类的,不能用index <transition-group name&qu…...
33.5 remote实战项目之设计prometheus数据源的结构
本节重点介绍 : 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写入数据 准备工作 新建项目 prome_remote_read_write设计prometheus 数据源的结构初始化 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写…...
Ceph文件存储
Ceph文件存储1.概念:数据以文件的形式存储在存储介质上,每个文件都有一个唯一的文件名并存储在一个目录结构中。提供方便的文件访问接口,支持多种文件操作,如创建、删除、读取、写入、复制等。用于存储和管理个人文件,如文档、图片…...
力扣-图论-5【算法学习day.55】
目录 前言 习题 1.移除可疑的方法 后言 前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键…...
Linux-音频应用编程
ALPHA I.MX6U 开发板支持音频,板上搭载了音频编解码芯片 WM8960,支持播放以及录音功能!本章我们来学习 Linux 下的音频应用编程,音频应用编程相比于前面几个章节所介绍的内容、其难度有所上升,但是笔者仅向大家介绍 Li…...
SQL复杂查询功能介绍及示例
文章目录 1. 多表连接(JOIN)功能介绍应用场景示例查询及初始表格customers 表(未查询前)orders 表(未查询前)INNER JOIN 示例LEFT JOIN 示例 2. 子查询(Subquery)功能介绍应用场景示…...
Python使用Selenium自动实现表单填写之蛇年纪念币蛇钞预约(附源码,源码有注释解析,已测试可用
Python实现纪念币预约自动填写表单 声明:本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站…...
快速掌握HTML
目录 1. HTML文件的基本结构* 前端开发工具搭建* vscode的三个插件* 编写第一个html代码* 快速生成代码框架 *html特殊字符2. 双标签2.1 标题标签 h12.2 段落标签 p2.3 格式化标签2.4 超链接标签 a2.5 表格标签2.6 列表标签1. 无序列表:ul标签( 快捷键:u…...
Linux 音频驱动实验
音频是我们最常用到的功能,音频也是 linux 和安卓的重点应用场合。I.MX6ULL 带有 SAI接口,正点原子的 I.MX6ULL ALPHA 开发板通过此接口外接了一个 WM8960 音频 DAC 芯片,本章我们就来学习一下如何使能 WM8960 驱动,并且通过 WM89…...
【分布式】Redis分布式缓存
一、什么是Redis分布式缓存 Redis分布式缓存是指使用Redis作为缓存系统来存储和管理数据的分布式方案。在分布式系统中,多台服务器共同对外提供服务,为了提高系统的性能和可扩展性,通常会引入缓存来减轻数据库的压力。Redis作为一种高性能的…...
几个Linux系统安装体验: 一些系统对比和使用记录
本文对一些系统做对比,并记录一些使用过程。 背景 本文所记录的内容,不保证绝对性,也不代表任何方的意见、意思、看法、观点。如有不适,权当笑料。 个人使用记录 centos7 centos7为笔者的主力系统,生产工具。虚拟机…...
c++数据结构算法复习基础--11--高级排序算法-快速排序-归并排序-堆排序
高阶排序 1、快速排序 冒泡排序的升级算法 每次选择一个基准数,把小于基准数的放到基准数的左边,把大于基准数的放到基准数的右边,采用 “ 分治算法 ”处理剩余元素,直到整个序列变为有序序列。 最好和平均的复杂度:…...
特朗普画像
任务内容 Description 特朗普当选了,网上流传着很多段子,也出了特朗普的头像。有人说,特朗普 的头像像一团云。所以今年马云去了美国和特朗普谈中美企业的发展。那么你能帮 忙打印出特朗普的头像吗? 抽象派认为,特朗普…...
torch如何产生3d随机变形场(DVFs)
随机变形场(Deformation Vector Fields, DVFs)是一种在图像处理和计算机视觉中常用的技术,用于生成变形后的图像或增强数据集的多样性。它通过创建一个在空间中定义的位移场,以实现图像的随机变形。以下是生成随机DVFs的主要步骤和方法: 1. 随机噪声生成 随机变形场的基…...
【PlantUML系列】用例图(三)
目录 一、组成部分 二、典型案例 一、组成部分 参与者(Actors):使用关键字 actor 后跟参与者的名称。用例(Use Cases):使用关键字 usecase 后跟用例的名称和编号(可选)。系统边界…...
PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)
代码中包含了PHP在一般情况下使用方法和RabbitMQ开启了SSL验证后的使用方法(我这边消费队列是使用接口请求的方式,每次只从中取出一条) 安装amqp扩展 PHP使用RabbitMQ前,需要安装amqp扩展,之前文章中介绍了Windows环…...
距离与AoA辅助的三维测距算法(适用于四个基站的情况的单点定位),MATLAB代码
本MATLAB 代码实现了一个基于LOS/NLOS混合环境的单点定位系统,主要用于估计目标物体的单点位 文章目录 代码运行结果源代码代码功能概述主要步骤分析初始化部分 绘图与输出 代码运行结果 定位结果如下: 命令行的坐标和误差输出: 部分代码…...
计算机网络原理之HTTP与HTTPS
一、前言 为了理解HTTP,我们有必要事先了解一下TCP/IP协议簇。 通常我们使用的网络(包括互联网)是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。 计算机与网络设备要相互通信,双方必须基于相同的方法。比如&#…...
使用did包进行多期DID分析
本例中,样例数据来自 Callaway 和 Sant’Anna (2020),研究问题是各州提高最低工资对县级青少年就业率影响。 样例数据集包含 2003 年至 2007 年 500 个县级青少年就业率的数据,其中一些州在 2004 年首次接受治疗,也有一些在 2006…...
Windows宝塔面板下IIS环境如何部署SSL证书?
Windows宝塔面板下IIS环境如何部署SSL证书? 平时服务器linux宝塔用的较多,所以linux系统宝塔,如何部署SSL证书还是比较熟悉,今天遇到一个windows的部署SSL证书,还是头一次,所以记录一下,以防忘…...
【MySQL】函数
函数 1.日期函数2.字符串函数3.数学函数4.其他函数 点赞???收藏???关注??? 你的支持是对我最大的鼓励,我们一起努力吧??? 在mysql中其实内置了很多的函数操作,这些函数可以让我们在数据统计的时候以及查表的时候进行各自各样的操作。 1.日…...
面试复盘 part 02·1202-1207 日
作品集讲述部分 分析反思 作品集讲述部分,视觉讲述部分需要更换,需要换成其他视觉相关的修改 具体话术 这是一个信息展示优化方案,用户为财务,信息区分度不足,理解成本较高,因此选择需要降低理解成本。…...
RISC-V 汇编语言
安装RISCV工具链 riscv-gnu-toolchain工具链和模拟器安装记录 - 知乎 (zhihu.com) riscv-gnu-toolchain工具链分elf-gcc、linux-gnu-gcc两个版本,以及对应的32位和64位版本。两个版本的主要区别是: riscv32-unknown-elf-gcc、riscv64-unknown-elf-gcc…...
MySQL Explain 指南
MySQL Explain 指南 idselect_typetablepartitionstypepossible_keyskeykeylenrefrowsfilteredExtra 使用 explain 执行 DML 语句时,数据不会发生变化。explain 的结果可能包含多行数据,每行对应一个表。若涉及 union 操作,MySQL 会创建临时表…...
keil报错---connection refused due to device mismatch
解决办法如下: 记得改成1 把Enable取消...
ubuntu下的chattts 学习4:Advanced Usage
源码 import ChatTTS import torch import torchaudiochat ChatTTS.Chat() chat.load(compileFalse) # Set to True for better performance ################################### # Sample a speaker from Gaussian.rand_spk chat.sample_random_speaker() print(rand_spk)…...
Ubuntu桌面突然卡住,图形界面无反应
1.可能等待几分钟,系统会自动反应过来。你可以选择等待几分钟。 2.绝大多数情况系统是不会反应过来的,这时候可以进入tty终端直接注销用户。 (1)Ubuntu有6个tty终端,按住CtrlAltF1可以进入tty1终端,(同理CtrlAltF2&a…...
毕设记录_论文阅读(动磁式音圈电机的开发与应用)_20241207
前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…...
我有一个Python项目,已经用docker打包镜像也push了,k8s怎么部署呢?
要在Kubernetes (k8s) 部署你的Python项目,你需要创建一系列的Kubernetes资源定义文件(通常是以.yaml为扩展名),这些文件描述了你希望在集群中运行的应用程序。以下是部署的基本步骤: 1. **准备Docker镜像**࿱…...
GAN(生成对抗网络)原理与目标函数
GAN(生成对抗网络)原理与目标函数 什么是 GAN? GAN 是一种生成模型,全名是 生成对抗网络 (Generative Adversarial Network)。它由两个部分组成: 生成器 (Generator, G):负责生成“假数据”。判别器 (Di…...
[Java]项目入门
这篇简单介绍一些入门的有关项目和行业的知识,并带着实现一个小项目。便于已经编程入门的各位准备进阶到下一个阶段。 先大致地介绍,一个完整的项目(不看客户端、服务端的分类)基本可以划分为三部分: 1.前端。比如你现在看到的CSDN页面就是一…...
自定义指令,全局,局部,注册
让输入框自动获取焦点(每次刷新自动获取焦点) <template><div><h3>自定义指令</h3><input ref"inp" type"text"></div> </template><script> export default {mounted(){this.$refs.inp.focus…...
存储类内存,非易失性内存)的升级换代,将有利于促进【PCIe交换芯片】市场的发展
摘要 根据 HengCe(恒策咨询)的统计及预测,2023年全球PCIe交换芯片市场销售额达到了10.05亿美元,预计2030年将达到23.81亿美元,年复合增长率(CAGR)为12.5%(2024-2030)。地…...
泷羽sec-burp(7)
免责声明 学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:http…...
OpenCV图像处理——二值化原理与代码实现(C++/Python)
概述 在 OpenCV 中,二值化(Binarization)是一种图像处理操作,它的目的是将一幅灰度图像转换为仅包含两种像素值(通常为 0 和 255,分别代表黑色和白色)的二值图像。通过设定一个合适的阈值&…...
Scala 高阶模式案例解析:从入门到实战
引言 Scala 作为一种功能强大的多范式编程语言,因其函数式编程特性而广受欢迎。其中,高阶模式(High-Order Patterns)是 Scala 函数式编程的核心概念之一,为开发者提供了解决复杂问题的优雅方式。本篇文章将全面解析 S…...
30天学会Go--第8天 GO语言 Gin Web框架学习与实践
30天学会Go–第8天 GO语言 Gin Web框架学习与实践 文章目录 30天学会Go--第8天 GO语言 Gin Web框架学习与实践前言一、Gin 的简介与安装1.1 Gin 的特点1.2 安装 Gin 二、Gin 的基础用法2.1 路由2.1.1 基本路由2.1.2 路由参数2.1.3 查询参数2.1.4 路由分组 2.2 中间件2.2.1 使用…...
用R(语言)学R-Learning R,In R
一、安装swirl包 在R语言控制面板,对话框输入以下命令: swirl 是一个非常有用的 R 包,它允许你通过交互式教程来学习 R 语言。以下是使用 swirl 包的基本步骤: 安装 swirl 包:首先,你需要在 R 中安装 swi…...
【银河麒麟操作系统运维】某平台多台虚拟机异常重启分析及处理
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 现象描述 某虚拟化平台多台虚拟机于凌晨触发异常…...