数据结构-线性表-应用题-2.2-4

news2024/5/20 3:19:54

从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。

有序顺序表如无特殊说明,一般指递增有序

先找到值大于等于s的第一个元素,然后找值大于t的第一个元素,将后面的元素前移覆盖待删除元素序列

bool del(SqList &L, int s, int t) {
    int i, j;
    if (s >= t || L.length == 0) {
        return false;
    }
    // 找到第一个大于等于s的元素的位置
    for (i = 0; i < L.length && L.data[i] < s; i++);
    // 若没有找到大于等于s的元素或遍历到末尾,则返回false
    if (i >= L.length) {
        return false;
    }
    // 找到第一个大于t的元素的位置
    for (j = i; j < L.length && L.data[j] <= t; j++);
    // 将[j, L.length)区间的元素向前移动到[i, L.length-(j-i))区间
    for (; j < L.length; i++, j++) {
        L.data[i] = L.data[j];
    }
    // 更新顺序表的长度
    L.length = i;
    return true;
}
  • s >= t || L.length == 0:首先进行边界检查,如果 s 大于等于 t 或者顺序表为空,则无法删除任何元素,直接返回 false
  • for (i = 0; i < L.length && L.data[i] < s; i++);:从顺序表的起始位置开始,查找第一个大于等于 s 的元素位置 i
  • if (i >= L.length):若没有找到大于等于 s 的元素,说明顺序表中不存在需要删除的元素,直接返回 false
  • for (j = i; j < L.length && L.data[j] <= t; j++);:继续从位置 i 开始,查找第一个大于 t 的元素位置 j
  • for (; j < L.length; i++, j++) { L.data[i] = L.data[j]; }:将 [j, L.length) 区间的元素向前移动到 [i, L.length-(j-i)) 区间,实现删除操作。
  • L.length = i;:更新顺序表的长度为 i,即删除操作后的新长度。
  • return true;:删除成功,返回 true。

删除元素不包括s和t

为什么是这个区间?

考虑以下情况:
区间 [j, L.length)包括从位置 j 到顺序表末尾的所有元素。这些元素需要被保留,因为它们不在要删除的范围 [s, t] 内。
区间 [i, L.length-(j-i))表示将上述元素移动到的新位置。这个区间的起始位置是 i,这是因为 i 是在 [s, t] 范围内找到的第一个元素的位置,即从这里开始的元素需要被删除或覆盖。

通过设置新的顺序表长度为 i 的值(即移动完成后的最后一个元素的索引加一),我们有效地切除了数组尾部的多余部分,这部分现在包含了重复的、不再需要的数据。

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

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

相关文章

课程作业管理系统,基于 SpringBoot+Vue+MySQL 开发的前后端分离的课程作业管理系统设计实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 教师功能模块 2.3. 学生功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势…

15【PS作图】像素画地图绘制

绘制视角 绘制地图的时候&#xff0c;有的人会习惯把要绘制的 房子、车子、围栏 小物件先画好&#xff0c;然后安放在地图上 但这样绘制出的各种物件之间&#xff0c;会缺乏凝聚力 既然物品都是人构造出的&#xff0c;不如以人的视角去一步步丰富地图&#xff1b; 比如下图…

【管理篇】如何提升管理中的沟通效率?

目录标题 管理沟通那些事如何提升沟通效率?&#x1f525;如何提升沟通技能&#xff1f; 向上沟通、员工激励和团队凝聚力提升 是管理沟通上比较难得问题 管理沟通那些事 管理沟通让技术管理者们痛苦的主因是确定性和规则性的减弱&#xff0c;不确定性的大幅度上升&#xff0c…

【RPC】Dubbo接口测试

关于rpc&#xff0c;推荐看看这篇 &#xff1a; 既然有HTTP协议&#xff0c;为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架&#xff1a; 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…

Python-VBA函数之旅-range函数

目录 一、range函数的常见应用场景 二、range函数使用注意事项 三、如何用好range函数&#xff1f; 1、range函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.2…

同城组局同城活动找搭子小程序JAVA源码面芽组局的实现方案

功能概述 基于微信小程序开发的一款软件&#xff0c;支持用户动态发布、私信聊天关注、礼物充值打赏、发起活动组局、用户报名参与、支持商家入驻&#xff0c;对接广告功能等。 活动发布&#xff1a;用户可以在平台上发布各种类型的活动&#xff0c;如户外徒步、音乐会观赏、…

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chapter 5插图

禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》 Chapter 5插图

第二篇【传奇开心果系列】Python深度学习库技术点案例示例:深度解读深度学习在语音助手方面的应用

传奇开心果博文系列 系列博文目录Python深度学习库技术点案例示例系列 博文目录前言一、深度学习在语音助手方面的应用介绍二、语音识别示例代码三、语义理解示例代码四、对话生成示例代码五、个性化服务示例代码六、多模态交互示例代码七、情感识别示例代码八、知识点归纳 系列…

聚类分析 | 基于DTW距离测度的Kmeans时间序列聚类算法(Matlab)

聚类分析 | 基于DTW距离测度的Kmeans时间序列聚类算法&#xff08;Matlab&#xff09; 目录 聚类分析 | 基于DTW距离测度的Kmeans时间序列聚类算法&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于DTW距离测度的Kmeans时间序列聚类算法…

【编码利器 —— BaiduComate】

目录 1. 智能编码助手介绍 2. 场景需求 3. 功能体验 3.1指令功能 3.2插件用法 3.3知识用法 3.4自定义配置 4. 试用感受 5. AI编程应用 6.总结 智能编码助手是当下人工智能技术在编程领域的一项重要应用。Baidu Comate智能编码助手作为一款具有强大功能和智能特性的工…

《安富莱嵌入式周报》第336期:开源计算器,交流欧姆表,高性能开源BLDC控制器,Matlab2024a,操作系统漏洞排名,微软开源MS-DOS V4.0

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 本周更新一期视频教程&#xff1a; BSP视频教程第30期&#xff1a;UDS ISO14229统一诊断服务CAN总线专题&#xff0c;常…

GoEdge自建CDN工具

GoEdge是一款管理分布式CDN边缘节点的开源工具软件&#xff0c;可以让用户轻松地、低成本地创建CDN/WAF等应用。同时提供免费版本和商业版本&#xff0c;本文基本免费版本安装测试。 GoEdgep安装涉及三部分&#xff1a; 边缘节点 - 接收和响应用户请求的终端节点 管理员系统 - …

一个故事就能够教会你看懂各种锁

我是一个线程&#xff0c;一个卖票程序的线程。 自从我们线程诞生以来&#xff0c;同一个进程地址空间里允许有多个执行流一起执行&#xff0c;效率提升的同时&#xff0c;也引来了很多麻烦。 我们卖票线程的工作很简单&#xff0c;比如票的总数是100&#xff0c;每卖一张就减…

使用双指针解决问题题集(二)

1. 有效三角形的个数 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 示例 2: 输入: nums [4,2,3,4] 输出: 4 题解&a…

欧鹏RHCE 第四次作业

unit4.web服务的部署及高级优化方案 1. 搭建web服务器要求如下&#xff1a; 1.web服务器的主机ip&#xff1a;172.25.254.100 2.web服务器的默认访问目录为/var/www/html 默认发布内容为default‘s page 3.站点news.timinglee.org默认发布目录为/var/www/virtual/timinglee.org…

List的两种实现

前置知识&#xff1a; 数组 baseAddress&#xff1a;数组的首地址 dataTypeSize&#xff1a;数组中元素类型的大小&#xff0c;如int为4字节 为什么数组索引从0开始&#xff0c;假如从1开始不行吗&#xff1f; 在根据数组索引获取元素的时候&#xff0c;会用索引和寻址公式来计…

8W 1.5KVDC 隔离宽电压输入 DC/DC 电源模块——TP08DA 系列

TP08DA系列电源模块额定输出功率为8W&#xff0c;外形尺寸为31.80*20.30*10.00&#xff0c;应用于2&#xff1a;1&#xff0c;4:1电压输入范围 9-18V,18-36V,36-72V9V-36V和18V-72VDC的输入电压环境&#xff0c;输出电压精度可达1%&#xff0c;具有输出短路保护等功能&#xff…

二十、Java的反射机制

1、Java反射机制的概念 所谓反射从程序的运行结果来看也很好理解,即可以通过对象反射求出类的名称。如下: 正常方式:引入需要的“包.类”名称---->通过new实例化----->取得实例化对象。 反射方式:实例化对象---->getClass()方法------>得到完整的“包.类”名…

鸿蒙通用组件弹窗简介

鸿蒙通用组件弹窗简介 弹窗----Toast引入ohos.promptAction模块通过点击按钮&#xff0c;模拟弹窗 警告对话框----AlertDialog列表弹窗----ActionSheet选择器弹窗自定义弹窗使用CustomDialog声明一个自定义弹窗在需要使用的地方声明自定义弹窗&#xff0c;完整代码 弹窗----Toa…

JavaSE——异常(1/2)-认识异常(介绍,异常的体系,了解如何解决异常)、自定义异常(自定义异常的种类,实例演示)

目录 认识异常 介绍 异常的体系 了解如何解决异常 自定义异常 自定义异常的种类 实例演示 认识异常 介绍 什么是异常&#xff1f; 异常就是代表程序出现的问题。 比如&#xff1a; int[] arr {10,20,30}; System.out.println(arr[3]);System.out.println(10 / 0); …