909-2015-T1
文章目录
- 1.原题
- 2.算法思想
- 3.关键代码
- 4.完整代码
- 5.运行结果
1.原题
线性表使用公式化描述方式存储。编写一个函数,从一给定的线性表A中删除值在x ~ y(x到y,x<=y)之间的所有元素,要求以较高的效率来实现。提示:可以先将线性表中所有值在x~y之间的元素置成一个特殊的值,并不立即删除它们,然后从最后向前依次扫描,发现具有特殊值的元素后,移动其后面的元素将其删除掉。
2.算法思想
不需要管提示,有更好的算法。对于在x ~ y之间的元素,不需要管。对于不在x ~ y之间的元素,移动到指定的位置。通过双指针来实现,这样免去了每次删除的复杂操作,降低时间复杂度
3.关键代码
typedef struct {int data[MAX_SIZE]; /**< 用数组存储线性表的元素 */int length; /**< 记录线性表的当前长度 */
} LinearList;/*** @brief 删除线性表中所有值介于 x 和 y 之间的元素** @param list 指向 LinearList 结构的指针* @param x 范围的下限值* @param y 范围的上限值*/
void deleteInRange(LinearList *list, int x, int y) {int insertPos = 0; // 插入位置的指针for (int i = 0; i < list->length; i++) {if (list->data[i] < x || list->data[i] > y) {if (i != insertPos) {list->data[insertPos] = list->data[i];}insertPos++;}}list->length = insertPos; // 更新线性表的长度
}
4.完整代码
/*** @file linear_list.c* @brief 实现了线性表的基本操作,如初始化、插入、删除、输出和删除范围内的元素。*/#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100 /**< 定义线性表的最大长度为100 */typedef struct {int data[MAX_SIZE]; /**< 用数组存储线性表的元素 */int length; /**< 记录线性表的当前长度 */
} LinearList;/*** @brief 删除线性表中所有值介于 x 和 y 之间的元素** @param list 指向 LinearList 结构的指针* @param x 范围的下限值* @param y 范围的上限值*/
void deleteInRange(LinearList *list, int x, int y) {int insertPos = 0; // 插入位置的指针for (int i = 0; i < list->length; i++) {if (list->data[i] < x || list->data[i] > y) {if (i != insertPos) {list->data[insertPos] = list->data[i];}insertPos++;}}list->length = insertPos; // 更新线性表的长度
}/*** @brief 初始化线性表** @param list 指向 LinearList 结构的指针*/
void initList(LinearList *list) {list->length = 0;
}/*** @brief 插入元素到线性表指定位置** @param list 指向 LinearList 结构的指针* @param element 要插入的元素值* @param position 插入的位置* @return int 插入成功返回1,失败返回0*/
int insertElement(LinearList *list, int element, int position) {if (position < 0 || position > list->length || list->length == MAX_SIZE) {return 0; // 插入失败}// 将插入位置之后的元素依次向后移动一位for (int i = list->length - 1; i >= position; i--) {list->data[i + 1] = list->data[i];}list->data[position] = element;list->length++; // 长度加一return 1; // 插入成功
}/*** @brief 删除线性表指定位置的元素** @param list 指向 LinearList 结构的指针* @param position 要删除的元素位置* @return int 删除成功返回1,失败返回0*/
int deleteElement(LinearList *list, int position) {if (position < 0 || position >= list->length) {return 0; // 删除失败}// 将删除位置之后的元素依次向前移动一位for (int i = position; i < list->length - 1; i++) {list->data[i] = list->data[i + 1];}list->length--; // 长度减一return 1; // 删除成功
}/*** @brief 输出线性表中的元素** @param list LinearList 结构*/
void displayList(LinearList list) {printf("Linear List: ");for (int i = 0; i < list.length; i++) {printf("%d ", list.data[i]);}printf("\n");
}/*** @brief 销毁线性表** @param list 指向 LinearList 结构的指针*/
void destroyList(LinearList *list) {list->length = 0;// 可选的:将数组元素清零// memset(list->data, 0, sizeof(list->data));
}/*** @brief 主函数** @return int 程序执行结果*/
int main() {LinearList list;initList(&list);int elements[] = {21, 22, 5, 6, 23, 7, 24, 8, 25, 9, 10, 26, 27, 28};int numElements = sizeof(elements) / sizeof(elements[0]);for (int i = 0; i < numElements; i++) {insertElement(&list, elements[i], i);}displayList(list);int x = 6;int y = 25;deleteInRange(&list, x, y);displayList(list);destroyList(&list);return 0;
}
5.运行结果

相关文章:
909-2015-T1
文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 线性表使用公式化描述方式存储。编写一个函数,从一给定的线性表A中删除值在x ~ y(x到y,x<y)之间的所有元素,要求以较高的效率来实现。提示&#…...
selenium下载安装对应的chromedriver并执行
文章目录 selenium对应版本chrome驱动下载114以及之前的chrome版本119/120/121的chrome版本 chromedriver安装执行selenium代码 selenium Selenium是广泛使用的模拟浏览器运行的库,它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,…...
1.什么是Angular?
Angular Angular 是一个应用设计框架与开发平台,旨在创建高效而精致的单页面应用。 什么是Angular? Angular 是一个基于 TypeScript 构建的开发平台。它包括: 一个基于组件的框架,用于构建可伸缩的 Web 应用。一组完美集成的库&am…...
Qt ListWidget
先创建QListWidgetItem: QListWidgetItem* pListItem1 new QListWidgetItem(QIcon(":/resources/editor.png"),u8"editor");QListWidgetItem* pListItem2 new QListWidgetItem(QIcon(":/resources/env.png"),u8"env");Q…...
微服务实战系列之加密RSA
前言 在这个时代,我们选择的人生目标已丰富多彩,秉持的人生态度也千差万别: 除了吃喝玩乐,还有科技探索; 除了CityWalk,还有“BookWalk”; 除了走遍中国,还有走遍世界; …...
Centos 里面为什么有的磁盘命名/dev/vda 有的是/dev/sda ?
环境: Centos7.9 问题描述: Centos 里面为什么有的磁盘命名/dev/vda 有的是/dev/sda ? 解决方案: 1.盘命名为/dev/vda或/dev/sda的差异主要取决于系统的安装方式和硬件架构。 /dev/sda是传统的磁盘命名方案,用于标识IDE、S…...
P9232 [蓝桥杯 2023 省 A] 更小的数(区间DP)
求大数字某连续部分反转后,比原数字小的个数 思路:自前向后遍历 ai是位于数字第i位的数字 aj是位于数字第j位的数字(i<j) ai>aj f[ai][aj]1; ai<aj f[ai][aj]0; aiaj f[ai][aj]f…...
【ArcGIS Pro二次开发】(77):ArcGIS Pro中图层的获取与解析
一、最简单的获取图层方式 通常情况下,如果要获取当前地图中的图层,可以用2种方法获取。 以下图为例: 一种是【map.Layers】属性获取,结果如下: 可以看出,这里只获取到了第一层级的图层,图层组…...
Robust Optimization, imperfect CSI, CSIT and CSIR
文章目录 写在前面CSI, CSIT and CSIR 写在前面 CSIT或者CSIR可不可以用来帮助实现隐蔽通信 人工噪声让窃听者估计出错误的信道。 CSI, CSIT and CSIR MIMO Minimum Total MSE Transceiver Design With Imperfect CSI at Both Ends 2009 TSP 多输入多输出 (MIMO) 系统已成为…...
【数据结构】栈详解
目录 1. 前言2. 栈2.1 栈的概念及结构2.2 如何实现栈2.3 数组栈实现2.3.1 top怎么确定2.3.2 栈顶插入2.3.2.1 栈顶插入分析2.3.2.2 栈顶插入代码实现 2.3.3 栈顶删除2.3.4 判空2.3.4.1 分析2.3.4.2 代码实现 2.3.5 栈的元素个数2.3.6 栈销毁2.3.7 栈访问数据 3. 源代码3.1 Stac…...
大结局!OpenAI创始人奥特曼和 Greg Brockman 将加入微软!!!
持续48小时的OpenAI政变大戏终于迎来了大结局! 微软堪称最大赢家💥💥💥 微软CEO刚刚宣布: 我们仍然致力于与 OpenAI 的合作伙伴关系,并对我们的产品路线图、我们在 Microsoft Ignite 上宣布的一切继续创…...
Linux QT交叉编译环境安装
参考链接 linux交叉编译Qt_linux qt 交叉编译-CSDN博客 关键点:编译脚本,放在qt源代码根目录的.sh文件 #!/bin/shcd ./qt-everywhere-src-5.12.9./configure -prefix /home/qsqya/compile/qt5.12.9/build \ -opensource \ -release \ -confirm-license…...
媲美有线操作,支持4KHz响应和无线充电的游戏鼠标,雷柏VT3S上手
对于无线鼠标来说,操作延迟和精度对游戏操作影响很大,常见的游戏鼠标至少都有1KHz的回报率,而雷柏今年已经出了很多支持4KHz回报的鼠标了,像是我现在用的这款VT3S游戏鼠标,就搭载了旗舰级的原相3395引擎,支…...
【Flask使用】全知识md文档,4大部分60页第3篇:状态cookie和session保持
本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF 表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy…...
类方法,静态方法和实例方法的区别及应用场景
在 Python 中,有三种不同类型的方法:实例方法、类方法和静态方法。它们各自有不同的特点和应用场景: 实例方法(Instance Method): 实例方法是最常见的方法类型,在方法定义中第一个参数通常被命…...
CleanMyMac X4.16免费版mac电脑一键清理电脑垃圾工具
但是,我最近发现随着使用时间的增加,一些奇奇怪怪的文件开始占据有限的磁盘空间,存储空间变得越来越小,系统占用空间越来越大,越来越多的无效文件开始影响我电脑的运行速度。 Mac的文件管理方式和Windows不太一样&…...
汽车级低压差稳压器LDO LM317BD2TR4G原理、参数及应用
LM317BD2TR4G主要功能特性分析 : LM317BD2TR4G 低漏 (LDO) 线性电压稳压器是一款可调 3 端子正向 LDO 电压器,能够在 1.2 V 至 37 V 的输出电压范围内提供 1.5 A 以上的电流。此电压稳压器使用非常简便,仅需两个外部电阻即可设置输出电压。另…...
多对多的创建方式与Ajax
模型层补充 MTV与MVC模型 MTV 全称 Models Templates Views 模型模板视图 MVC 全称 Models Views Controller 模型视图控制MTV: Django号称是MTV模型 MVC: 其实django本质也是MVC 拓展: vue框架:MVVM模型choices参数(数据库字段设计常见) choices使用 class User(models.Mod…...
【Linux网络】详解使用http和ftp搭建yum仓库,以及yum网络源优化
目录 一、回顾yum的原理 1.1yum简介 yum安装的底层原理: yum的好处: 二、学习yum的配置文件及命令 1、yum的配置文件 2、yum的相关命令详解 3、yum的命令相关案例 三、搭建yum仓库的方式 1、本地yum仓库建立 2、通过http搭建内网的yum仓库 3、…...
算法设计与分析算法实现——动态规划最大子段
输入:整数序列a1,a2,…,an 输出:序列的一个子段,其和Σak最大 注意:当所有整数都为负数时,定义最大子段和为0 使用动态规划,输入数组是a[n]; 状态转移方程dp[i]max(dp[i-1]a[i],a[i])——这个状…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
