【数据结构】【线性表】王道课后习题【04.删除有序顺序表中指定范围的元素】(可直接运行)

【王道408数据结构】线性表习题 2. 顺序表逆置 3. 删除所有值为x的元素 4. 删除范围元素 5. 删除范围元素(与第四题相似) 6. 删除重复元素 7. 合并两个有序数组 8. 两个链表换位 9. 二分查找 10. [2010统考真题]循环移动 11. [2011统考真题]找两个顺序表合并的中位数 12. [2013统考真题]出现超过一半的元素 13. [2018统考真题] 数组未出现最小正整数 14. [2020统考真题]三元数组最小距离... 阅读详情

1.题目描述

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

2.算法实现

由于是有序列表,那么只需要找到第一个大于s的值与最后一个小于t的值即可。

// 算法实现
bool deleteDuringSToT(SeqList &L, int s, int t) {
    // 判空
    if(Empty(L)) {
        printf("the list is empty");
        return false;
    }
    // 判断s与t是否合理
    if(s >= t) {
        return false;
    }
    // 由于是有序列表,那么只需要找到第一个大于s的值与最后一个小于t的值即可
    // 定义第一个大于等于s的元素的下标与最后一个小于t的元素的下标
    // index_s设为-1方便处理所有元素小于s的情况
    // index_t设为L.length - 1是为了处理所有元素都小于t的情况
    int index_s = -1, index_t = L.length - 1;
    // 第一个就大于s的情况
    if(L.data[0] > s) {
        index_s = 0;
    }
    for(int i = 1;i < L.length;i++) {
        if(L.data[i - 1] <= s && L.data[i] > s && index_s != 0) {
            index_s = i;
        }
        if(L.data[i - 1] < t && L.data[i] >= t) {
            index_t = i - 1;
        }
    }
    // 如果循环结束后index_s的值仍为-1,即代表没有比s大的元素
    if (index_s == -1) {
        return false;
    }
    // 删除s与t之间的值
    for(;index_t < L.length - 1;index_s++, index_t++) {
        L.data[index_s] = L.data[index_t + 1];
    }
    L.length = index_s;
    return true;
}

3.完整代码

#include<stdio.h>
#include<stdlib.h>

#define InitSize 10

typedef struct {
    int *data;  // 数据
    int MaxSize;    // 最大容量
    int length; // 目前长度
} SeqList;

// 初始化
void InitList(SeqList &L) {
    // 为了方便,这里选择初始化时填入1-10
    // 申请10个整型的空间
    L.data = (int *)malloc(InitSize * sizeof(int));
    // 数据填入
    for(int i = 0;i < InitSize;i++) {
        L.data[i] = i + 1;
    }
    L.length = 10;
    L.MaxSize = InitSize;
}

// 判空操作
bool Empty(SeqList L) {
    // 直接根据长度判断即可
    if(L.length == 0) {
        return true;
    }
    return false;
}

// 顺序表的输出操作
bool PrintList(SeqList L) {
    // 若表为空,则不能输出
    if(Empty(L)) {
        return false;
    }
    // 循环遍历输出
    for(int i = 0;i < L.length;i++) {
        printf("data[%d]=%d\n", i, L.data[i]);
    }
    return true;
}

// 算法实现
bool deleteDuringSToT(SeqList &L, int s, int t) {
    // 判空
    if(Empty(L)) {
        printf("the list is empty");
        return false;
    }
    // 判断s与t是否合理
    if(s >= t) {
        return false;
    }
    // 由于是有序列表,那么只需要找到第一个大于s的值与最后一个小于t的值即可
    // 定义第一个大于等于s的元素的下标与最后一个小于t的元素的下标
    // index_s设为-1方便处理所有元素小于s的情况
    // index_t设为L.length - 1是为了处理所有元素都小于t的情况
    int index_s = -1, index_t = L.length - 1;
    // 第一个就大于s的情况
    if(L.data[0] > s) {
        index_s = 0;
    }
    for(int i = 1;i < L.length;i++) {
        if(L.data[i - 1] <= s && L.data[i] > s && index_s != 0) {
            index_s = i;
        }
        if(L.data[i - 1] < t && L.data[i] >= t) {
            index_t = i - 1;
        }
    }
    // 如果循环结束后index_s的值仍为-1,即代表没有比s大的元素
    if (index_s == -1) {
        return false;
    }
    // 删除s与t之间的值
    for(;index_t < L.length - 1;index_s++, index_t++) {
        L.data[index_s] = L.data[index_t + 1];
    }
    L.length = index_s;
    return true;
}

int main() {
    SeqList L;
    InitList(L);
    PrintList(L);
    printf("------------------------\n");
    deleteDuringSToT(L, 1, 10);
    PrintList(L);
    return 0;
}

4.运行结果

在这里插入图片描述

数据结构-王道课后题-线性表(1) 顺序表 1. 从顺序表中是删除最小元素,并返回该元素的值空出位置由最后一位填充。 bool Delete_min(sqList &L, ElemType &value){ if(L.length<=0){ //表为空,直接返回 return false ; } value=L.data[0]; int... 阅读详情

相关推荐

王道数据结构考研之顺序表练习题

1、设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1) void Reverse(SqList &L){ ElemType temp;//辅助变量 for(int i=0;i<L.length/2;i++){ temp=L.data[i]; L.data[i]=L.data[L.length-i-1]; L.data[L.lengt...

ypqqq的博客 874

【数据结构】从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素,如果s或t 不合理或者顺序表为空则显示出错信息并退出运行。(直接运行)

第一步 初始化(结构体 基本函数) #include <iostream> using namespace std; #define Max 10 typedef int Elemtype; typedef struct { Elemtype data[Max]; int length; }Sqlist; void swap(Elemtype &a,Elemtype &b){ Elemtype c; c = a; a = b;

JJ9845324的博客 1021

《2020王道》| 数据结构 | 学习笔记 | 第二章 | 线性表

《2020年王道数据结构》考研复习学习笔记重要知识点摘录,本来应该算是转载性质,因为我只是把重要知识点摘抄出来,并不是我自己的想法和经验,但是转载需要原文链接,王道官网并没有给出整本书的详细内容链接,所以暂且选择原创。我在这里申明,该博客只用于个人学习记录。

Wu Y H的博客 1485

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

#include<iostream> using namespace std; #define MaxSize 50 typedef int ElemType; typedef struct { int data[MaxSize]; int length; }sqList; bool Del_s_t2(sqList &L, ElemType s, ElemType t){ //删除有序顺序表L中值在给定值s与t之间的所有元素 int i,j; i

qq_43687652的博客 1021

Chronos时间序列预测实战:从零开始微调你的第一个大语言模型(附完整代码)

本文提供了一份详细的Chronos时间序列预测大语言模型微调实战指南。从环境搭建、数据预处理到模型配置与训练,手把手教你如何利用自己的数据微调Chronos模型,并完成评估与部署,助你快速掌握这一前沿技术。

zzz56的博客 300

BurpSuite+安卓模拟器双保险:避开真机抓包限制的完整配置指南

本文详细介绍了如何通过BurpSuite与安卓模拟器(如雷电、夜神)协同工作,绕过真机抓包限制的完整配置指南。从环境准备、网络拓扑配置到证书部署和流量分析,提供了一套高效的解决方案,帮助安全测试人员稳定捕获手机数据包,提升测试效率。

Apple的专栏 439

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

题目:从顺序表中删除其值在给定值s与t之间(要求是s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。 #include "stdio.h" #define MaxSize 8 typedef struct { int data[MaxSize]; int length; }SqList; bool delete_s_t(SqList &L,int s,int t) { int i,k=0; if(L.length==0||s>=t)...

qq_45953120的博客 1117

windchill安装搭建(保姆式)

保姆式搭建windchill 材料准备 Vmware工具,用来创建和打开虚拟机的工具 安装系统的镜像文件 数据库安装文件,这里是Oracle数据库 Windchill的安装包 Vmware工具,用来安装和打开虚拟机的软件 Windowsserver2008的镜像工具,用来安装虚拟机环境的系统,如果你有win2007或win2010的也可以,在做虚拟机时,需要先安装系统。 Oracle数据库安装包 Windchill11M030的安装包 (安装包如有需要可以私信邮箱发送) 虚拟机安装 安装虚拟机VMware

tr1294937662的博客 6217

顺序表 删除指定范围的数据

设计一个高效的算法,从顺序表L中删除所有值介于x和y之间(包括x和y)的所有元素(假设y>=x),要求时间复杂度为O(n),空间复杂度为O(1)。

爆零者_083的博客 1224

Zynq实战:如何用AXI4-Stream To Video Out实现HDMI视频输出(附时序调试技巧)

本文详细介绍了基于Zynq平台使用AXI4-Stream To Video Out IP核实现HDMI视频输出的工程化解决方案。内容涵盖系统架构设计、AXI4-Stream接口优化、异步FIFO配置、时序同步调试技巧等核心环节,特别针对1080p60视频输出提供具体参数配置和性能优化建议,帮助开发者快速构建稳定的视频处理系统。

sql99的博客 462

基于Matlab使用雷达资源管理有效跟踪多个机动目标仿真(附源码)

多功能雷达可以搜索目标,确认新轨道,并重新访问轨道以更新状态。为了执行这些功能,多功能雷达通常由资源管理器管理,该资源管理器创建用于搜索、确认和跟踪的雷达任务。这些任务是根据优先级和时间安排的,因此,在每个时间步长中,多功能雷达都可以将其波束指向所需的方向。在此示例中,对于用于跟踪机动目标的雷达,有两个相互冲突的要求:目标的数量及其初始位置通常事先不知道。因此,雷达必须不断搜索感兴趣的区域才能找到目标。此外,雷达需要在进入雷达覆盖区域后立即检测并建立对每个目标的跟踪。目标机动的时间段事先是未知的。

珞瑜的博客 3146

C语言数据结构-顺序表删除指定范围V2.0

顺序表删除指定范围 顺序表 删除指定范围 设计一个高效的算法,从顺序表L中删除所有值介于x和y之间(包括x和y)的所有元素(假设y>=x),要求时间复杂度为O(n),空间复杂度为O(1)。 函数原型如下:void del_x2y(SeqList *L, ElemType x, ElemType y); 相关定义如下: struct _seqlist{ ElemType elem[MAXSIZE]; int last; }; typedef struct _seqlist S

aiqq136的博客 2604

linux 基于debian/ubuntu AB系统适配(二)-updateEngine移植

其实A/B系统的原理很简单,大部分的工作都集中在uboot上,rootfs只是起到一个辅助的作用,但这个作用也就必不可少的。你会发现在这个其中并没有kernel的参与。

badbayyj的博客 1033

2024王道数据结构课后习题代码

2.1.2 顺序表初始化(动态) 2.1.3 顺序表上插入和删除 2.2综合题 这些题是王道教材的p18-p19的1-14题,2.2.1即为第一题 2.2.2 2.2.3 未完待续… 2023年四月末之前将更新完本书所有习题

m0_51057239的博客 5238

claude code desktop中出现Doesn‘t look like an Anthropic model - expected a gateway model route 解决方案

本文主要介绍了claude code desktop中出现Doesn’t look like an Anthropic model - expected a gateway model route referencing an Anthropic model和Server is busy. Retrying的解决方案,希望能对使用claude code desktop的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

23王道数据结构代码题全解(一)

此次更新线性表(7/14)计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,都可以编译运行,包含暴力解和最优解,仓库在这里 https://github.com/mancuoj/wangdao

漫磋嗟 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

王道考研数据结构代码总结

目录 不带头结点的单链表 带头结点的单链表 不带头结点的单链表 #include<iostream> #include<algorithm> using namespace std; typedef struct LNode { int data; struct LNode* next; }LNode, * LinkList; //struct LNode* == LinkList //强调节点 用LNode //强调链表 用LinkList //初始化单链

兜率工的博客 3万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

王道数据结构课后代码题(可直接运行,不断更新)

题目目录1、从线性表中删除最小元素,并将最后一个值赋值2、逆置线性表3、删除线性表指定元素x 下面是我所遇到的数据结构的代码题,哈哈哈做个记录,可能算法不够优秀嘻嘻!! 1、从线性表中删除最小元素,并将最后一个值赋值 /** * 从顺序表中删除具有最小的元素(假设唯一)并由函数返回被删除元素的值, * 空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行 * @return */ #include "bits/stdc++.h" using namespace std; #defi

weixin_45552475的博客 2340

【王道数据结构课后习题代码练习完整版】顺序表

设计一个算法,完成用最少时间在表中查找数值为x的元素,若找到,则将其与后继元素位置交换,若找不到,则将其插入表中并使表中元素仍递增有序。,am)和(b1,b2,…2.2.3-3 对长度为n的顺序表L,编写一个时间复杂度为o(n),空间复杂度为o(1)的算法,该算法删除线性表中所有值为x的元素。2.2.3-4 从有序顺序表中删除其值在s与t之间(s

致力于成为一名data scientist 的奋斗者 2349

误闯天家!数据结构-线性表王道经典例题剖析

这些题围绕顺序表的遍历、元素移动、指针(索引)技巧利用顺序表随机访问:通过索引快速定位、操作元素,比如找最小值、双指针遍历。优化时间 / 空间复杂度:能用 O (1) 辅助空间就不用额外数组(如双指针、摩尔投票 );用遍历、逆置等操作把时间压到 O (n)。核心这些题围绕顺序表的遍历、元素移动、指针(索引)技巧利用顺序表随机访问:通过索引快速定位、操作元素,比如找最小值、双指针遍历。优化时间 / 空间复杂度:能用 O (1) 辅助空间就不用额外数组(如双指针、摩尔投票 );

爱因斯晨的博客 1318

【王道数据结构】删除顺序表中所有值为x的元素

对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的元素 思路: 记录值为x元素的个数count 对值不为x的元素,向前移动count个单位 顺序表长减去count 伪代码: void DelX(SqList &L, ElmType x){ int count = 0, i = 0; while(i < L.length){ if(x == L.data[i]) count++; else a[i-count

Talk is cheap. So look at my blog. 5272

【数据结构】【线性表】王道课后习题【05.删除无序顺序表中指定范围的元素】(可直接运行)

从顺序表中删除其值在给定值s与t之间(包含s和t,要求s

treesorshining的博客 343

2.2 线性表的顺序表示-综合应用题(基础题1-9)

线性表的顺序表示-综合应用题基础题解析与代码。

Eumenides_Suki的博客 2323

数据结构复习—王道课后习题(线性表)

一、

m0_51769031的博客 2442

2024年王道考研数据结构线性表—顺序表题目

24王道考研复习书的题

qq_51536841的博客 926
上一篇: 【数据结构】王道课后习题(线性表)(一)(可直接运行)
下一篇: 【数据结构】【线性表】王道课后习题【05.删除无序顺序表中指定范围的元素】(可直接运行)
Silver  Star
Silver Star 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄7年 1万+粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silver Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值