数据结构常考基础代码题-顺序表有序插入

顺序表递增有序,插入元素 x,仍递增有序

第一步:定义顺序表结构体

根据题目中的“顺序表递增有序”,我们需要定义一个顺序表结构体,用于存储元素和顺序表的相关信息。

typedef struct {int *data; // 动态数组存储元素int length; // 顺序表当前长度int size; // 顺序表的最大容量
} Sqlist;

第二步:实现查找插入位置的函数

根据题目中的“插入元素 x”,我们需要实现一个函数 find,用于在列表里一直往前找到第一个不小于 x 的数的索引。

int find(Sqlist L, int x) {int i = 0;for (; i < L.length; i++) {if (x <= L.data[i]) {break;}}return i; // 返回找到的位置
}

第三步:实现插入元素的函数

根据题目中的“插入元素 x,仍递增有序”,我们需要实现一个函数 insert,用于将元素 x 插入到顺序表中,并保持顺序表的递增有序性。

void insert(Sqlist *L, int x) {int p = find(*L, x); // 找到插入位置// 如果顺序表已满,需要扩容if (L->length == L->size) {L->size = L->size * 2 + 1; // 扩容策略int *newData = (int *)realloc(L->data, L->size * sizeof(int));if (!newData) {exit(-1); // 内存分配失败,退出程序}L->data = newData;}// 将p位置及之后的元素向后移动for (int j = L->length; j > p; j--) {L->data[j] = L->data[j - 1];}// 插入元素xL->data[p] = x;L->length++; // 更新顺序表长度
}

第四步:在 main 函数中测试插入操作

最后,我们需要在 main 函数中创建顺序表并测试插入操作,以确保代码的正确性。

int main() {Sqlist L;L.size = 10; // 初始化最大容量L.length = 0;L.data = (int *)malloc(L.size * sizeof(int));if (!L.data) {exit(-1); // 内存分配失败,退出程序}// 插入元素insert(&L, 5);insert(&L, 3);insert(&L, 8);// 打印顺序表for (int i = 0; i < L.length; i++) {printf("%d ", L.data[i]);}printf("\n");// 释放内存free(L.data);return 0;
}

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

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

相关文章

DeepFM模型代码详解

直到看到这篇文章&#xff0c;我才搞明白类别特征怎么做lookup的&#xff0c;也看明白了代码逻辑。如果你看完没懂&#xff0c;私信留下wx&#xff0c;给你讲懂。 1、Deepfm 的原理&#xff0c;DeepFM 是一个模型还是代表了一类模型&#xff0c;DeepFM 对 FM 做了什么样的改进…

单细胞copyKat分析学习和整理

CopyKAT(肿瘤拷贝数核型分析)是一种使用综合贝叶斯方法的计算工具&#xff0c;能够在单细胞中以5MB分辨率检测全基因组非整倍体&#xff0c;以便从高通量单细胞RNA测序数据中区分肿瘤细胞与正常细胞&#xff0c;并识别肿瘤亚克隆。 (这里提一下,“5MB”是指 5兆碱基对(5 megab…

JSP复习(二)

九大内置对象 在 JSP&#xff08;JavaServer Pages&#xff09;中&#xff0c;有九大内置对象&#xff0c;这些对象为开发者提供了常用的功能&#xff0c;帮助简化 JSP 页面中的处理。以下是这九大内置对象&#xff1a; request&#xff1a;表示客户端请求的对象&#xff0c;可…

CTF-PWN方向 栈溢出等基础知识笔记(2)

C语言基本函数补充 write函数 ret2syscall 要求有0x80这种系统调用存在 &#xff08;0x0A是回车的意思&#xff09; 案例 通过file查看这个文件 发现是静态编译的文件 所以很多库函数都被编译进去了 但是不存在bin/sh字符串 不存在system和backdoor函数 修改&#xff0c;rea…

纯手柄控制电脑(且不用插鼠标而使用虚拟鼠标)

前言 因电脑升级后&#xff0c;旧主机就作为客厅游戏机使用了&#xff0c;于是想尽量减少设备的插入&#xff0c;单纯的每次只拔插手柄这一项外设就行&#xff0c;于是需要两大步骤即可到位。 安装JoyXoff 一、官网下载并直接安装&#xff1a;JoyXoff 二、默认开机自启&…

【环境搭建】远程服务器搭建ElasticSearch

参考&#xff1a; 非常详细的阿里云服务器安装ElasticSearch过程..._阿里云服务器使用elasticsearch-CSDN博客 服务器平台&#xff1a;AutoDL 注意&#xff1a; 1、切换为非root用户&#xff0c;su 新用户名&#xff0c;否则ES无法启动 2、安装过程中没有出现设置账号密码…

AD9361 在低至 1MHz 的频率下运行

AD9361 在低至 1MHz 的频率下运行 AD -FREQCVT1-EBZ是包含AD9361的FMCOMMS3/4/5板的附加板。虽然完整的芯片级设计包可在此 RF 收发器的ADI产品页面上找到&#xff0c;但有关此卡的信息及其使用方法、围绕它的设计包以及可使其工作的软件可在此处找到。 AD-FREQCVT1-EBZ 模块…

山西农业大学20241015

02-VUE 一. Vue中常用的指令1. Vue指令概述2 Vue中指令的分类3 Vue中指令3.1 内容渲染指令3.2 条件渲染指令3.2.1 v-show3.2.2 v-if3.2.3 v-else 和 v-else-if 3.3 事件绑定指令 v-on--重要3.3.1 内联语句3.3.2 methods中的函数名 一. Vue中常用的指令 1. Vue指令概述 概念: 指…

安装Node.js环境,安装vue工具

一、安装Node.js 去官方网站自行安装自己所需求的安装包 这是下载的官方网站 下载 | Node.js 中文网 给I accept the terms in the License Agreement打上勾然后点击Next 把安装包放到自己所知道的位置,后面一直点Next即可 等待它安装好 然后winr打开命令提示符cmd 二、安装…

MySQL中表的约束

1&#xff0c;概念 表中一定要有各种约束&#xff0c;通过约束&#xff0c;让我们来插入数据库中的数据是符合预期的。 约束本质是通过技术手段&#xff0c;倒逼程序员插入正确的数据&#xff1b;反过来&#xff0c;站在MySQL的角度来单&#xff0c;内部已经插进来的数据&…

YOLOv11改进策略【卷积层】| ParNet 即插即用模块 二次创新C3k2

一、本文介绍 本文记录的是利用ParNet中的基础模块优化YOLOv11的目标检测网络模型。 ParNet block是一个即插即用模块,能够在不增加深度的情况下增加感受野,更好地处理图像中的不同尺度特征,有助于网络对输入数据更全面地理解和学习,从而提升网络的特征提取能力和分类性能…

Web安全 - 跨站点请求伪造CSRF(Cross Site Request Forgery)

文章目录 OWASP 2023 TOP 10CSRF 导图CSRF的基本概念CSRF的工作原理常见CSRF攻击模式CSRF防御策略补充建议应用场景实战防御策略选择1. CSRF Token&#xff08;首选&#xff09;2. SameSite Cookie属性3. 验证Referer和Origin4. 多因素认证 实现方案CSRF Token实现SameSite Coo…

(39)MATLAB生成高斯脉冲及其频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图 前言 高斯脉冲在通信中是很重要的调制符号波形&#xff0c;本文使用MATLAB生成高斯脉冲&#xff0c;并使用FFT变换给出其频谱。 一、MATLAB仿真代码 代码如下&#xff1a; % 信号参数 fs 100; % 采样…

自注意力机制self-attention中的KV 缓存

在自注意力机制中&#xff0c;KV 缓存&#xff08;Key-Value Caching&#xff09;主要用于加速模型在推理阶段的计算&#xff0c;尤其是在处理长序列或者生成任务&#xff08;如文本生成&#xff09;时&#xff0c;这种缓存机制可以显著提高效率。 1. KV 缓存的背景 在 Trans…

【Vercel】Vercel部署项目遇到的问题

部署问题1&#xff1a; 问题详情 部署提示报错&#xff0c;vite的命令找不到 13:18:21.159 13:18:21.160npm error This is an error with npm itself. Please report this error at: 13:18:21.160npm error 13:18:221.16 npm error A complete l <https://github.com/np…

【自动驾驶汽车通讯协议】I2C(IIC)总线通讯技术详解

文章目录 0. 前言1. I2C简介2.I2C的工作原理2.1 硬件要求&#xff1a;2.2 半双工通信&#xff1a; 3. 通信时序4. 其他特性4.1 通信速率4.2 抗干扰措施4.3 注意事项 5. 在自动驾驶汽车中的应用5.1 I2C操作模式5.2 I2C的用途 6. 总结 0. 前言 按照国际惯例&#xff0c;首先声明&…

Java—类和对象习题讲解

如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 目录 习题一&#xff1a; 习题二&#xff1a; 习题三&#xff1a;.import static 能够导入一些静态方法 习题四&#xff1a; 习题五&#xff1a; 习题六&#xff1…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一&#xff1a;暴力O(N^2)1.2.2 思路二&#xff1a;hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…

Visual Studio Code基础:使用debugpy调试python程序

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 一、安装调试器插件 在VS code中可以很轻松地调试Python程序&#xff0c;首先需要安装Python调试器插件&#xff0c;如图1所示。 图1 安装调试器插件 Python Debugge…

Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一、Hash哈希类型的基本介绍。 哈希表&#xff1a;之前学过的所有数据结构中&#xff0c;最最重要的。 1、日常开发中&#xff0c;出场频率非常高。 2、面试中&#xff0c;非常重要的考点。 Redis自身已经是键值对结构了。Redis自身的键值对就是通过哈希的方式来组织的。把…