【数据结构】【线性表】王道课后习题【06.删除有序顺序表重复的元素】(可直接运行)

删除重复元素(顺序表、单链表) 一、顺序表删除重复元素 二、删除带头结点的单链表中值重复的元素 三、单链表字符统计 阅读详情

1.题目描述

从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。

2.算法实现

由于是有序表,那么可以知道如果值重复,那么一定是在一起的。可以定义两个变量i,j。i用于记录最后一个不重复的元素的下标,j用于遍历寻找不重复元素,相同则j继续自增,直至找到下一个不重复,再进行上一步操作可以通过遍历,如果data[i]与data[j]不相同,则用下标为j的元素覆盖下标为i+1的元素,同时++i,最后修改length,算法完成。

// 算法实现
// 由于是有序表,那么可以知道如果值重复,那么一定是在一起的
// 可以定义两个变量i,j
// i用于记录最后一个不重复的元素的下标
// j用于遍历寻找不重复元素
// 即可以通过遍历,如果data[i]与data[j]不相同,则用下标为j的元素覆盖下标为i+1的元素,同时++i
// 相同则j继续自增,直至找到下一个不重复,再进行上一步操作
// 最后修改length,算法完成
bool delTheSameElement(SeqList &L) {
    // 判空
    if(Empty(L)) {
        printf("the list is empty");
        return false;
    }
    // i用于记录最后一个不重复的元素的下标
    // j用于遍历寻找不重复元素
    int i, j;
    for(i = 0, j = 1;j < L.length;j++) {
        // 若是不重复,则用下标为j的元素覆盖下标为i+1的元素,同时++i
        if(L.data[i] != L.data[j]) {
            // ++i表示先加1再起下标作用
            L.data[++i] = L.data[j];
        }
    }
    // i即为最后一个不重复的元素的下标,故将length修改为i+1
    L.length = i + 1;
    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+=2) {
        L.data[i] = i + 1;
        L.data[i + 1] = 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;
}

// 算法实现
// 由于是有序表,那么可以知道如果值重复,那么一定是在一起的
// 可以定义两个变量i,j
// i用于记录最后一个不重复的元素的下标
// j用于遍历寻找不重复元素
// 即可以通过遍历,如果data[i]与data[j]不相同,则用下标为j的元素覆盖下标为i+1的元素,同时++i
// 相同则j继续自增,直至找到下一个不重复,再进行上一步操作
// 最后修改length,算法完成
bool delTheSameElement(SeqList &L) {
    // 判空
    if(Empty(L)) {
        printf("the list is empty");
        return false;
    }
    // i用于记录最后一个不重复的元素的下标
    // j用于遍历寻找不重复元素
    int i, j;
    for(i = 0, j = 1;j < L.length;j++) {
        // 若是不重复,则用下标为j的元素覆盖下标为i+1的元素,同时++i
        if(L.data[i] != L.data[j]) {
            // ++i表示先加1再起下标作用
            L.data[++i] = L.data[j];
        }
    }
    // i即为最后一个不重复的元素的下标,故将length修改为i+1
    L.length = i + 1;
    return true;
}

int main() {
    SeqList L;
    InitList(L);
    PrintList(L);
    printf("------------------------\n");
    delTheSameElement(L);
    PrintList(L);
    return 0;
}

4.运行结果

在这里插入图片描述

【2023王道数据结构】【线性表—page18—06】C、C++完整实现(可直接运行) ~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ 如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~ 题目: 解题思路: >将这个线性表看成两部分 >第一部分是已经无重复部分,第二部分带查找部分 >如果第一部分的尾元素与第二部分首元素不等将其加入到第一部分尾部 >如果不等,则第二部分后移一位继续比较 代码实现: #include <iostream> using namespace std; #define Maxsi. 阅读详情

相关推荐

编写算法清除顺序表L中所有重复的数据元素

编写算法清除顺序表L中所有重复的数据元素

数据结构-集合

数据结构-集合

qq_43714814的博客 1829

实战|验证码突破思路

漏洞成因:由于逻辑设计缺陷,可绕过验证,比如直接删除COOKIE或验证码参数可绕过、当验证不通过清空session时,验证码参数值为空时绕过等。测试方法:抓包,删除验证码字段,查看是否可以成功发送抓包,正常流程下,记录验证码后的数据包,替换目标包中内容,直接发送,查看是否可以直接绕过验证码案例:Step1.输入正确账户信息和错误验证码,登录时抓包Step2.删除COOKIEStep3.客户端登陆成功。

weixin_46239998的博客 8098

【数据结构—顺序表】顺序表中删除所有其值重复的元素

【数据结构—顺序表】顺序表中删除所有其值重复的元素 描述:有了一个顺序表(a 0 ,a 1 ,…,a n-1),元素中可能存在重复的值,元素是无优先的,从顺序表中删除其值重复的所有元素,即值相同的元素仅仅保留一个,输出删除后的顺序表。要求:该删除函数不属于类的成员函数,定义一个独立的函数,通过使用顺序表的基本操作(即成员函数)实现。 #include<iostream> using namespace std; void shanchu(int a[],int *n){ int i=0,j=*

wanshuai12138的博客 3112

银河麒麟V10+QT6.0中文输入法环境搭建全攻略(附镜像加速技巧)

本文提供了在银河麒麟V10操作系统上为QT6.0搭建中文输入法环境的完整实战指南。文章详细介绍了从系统准备、镜像源优化、QT6安装器获取与加速安装,到编译Fcitx5输入法插件依赖库、深度配置环境变量与项目的全流程。重点分享了使用国内镜像源加速安装的技巧,解决了国产化开发中QT应用无法输入中文的常见难题,旨在帮助开发者快速构建稳定高效的开发环境。

weixin_29204749的博客 392

别再被systemd-resolved坑了!银河麒麟V10下用Bind9搭建内网DNS的完整避坑指南

本文详细介绍了在银河麒麟V10和Ubuntu系统下部署Bind9 DNS服务器时,如何解决与systemd-resolved的端口冲突问题。提供了五种专业级解决方案,包括彻底禁用systemd-resolved、智能端口转发等,并特别针对银河麒麟V10的安全加固需求给出了配置建议和诊断工具,帮助用户高效搭建内网DNS服务。

weixin_30342209的博客 654

关于数据结构中线性表的顺序存储结构删除相同的数据

顺序表中相同元素进行删除,避开bug

m0_63993103的博客 1492

超详细MySQL 8.0安装与配置

MySQL的安装与配置 还不会安装MySQL的同学们,还不会配置MySQL的同学们,赶紧按照下面步骤操作起来,超详细安装步骤如下: 进入MySQL官网 1、点击download 2、点击MySQL Community Server 3、选好选项点击go to download page 4、点击download 5、点击no thanks,just start my download 6、选Server only,点击Next 7、点击Execute 8、点击

Turniper的博客 8753

【数据结构--顺序表】删除有序数组中的重复项

数据结构 顺序表 删除有序数组中的重复项 C C++

awww224112的博客 1677

立创开源桌面激光雕刻机DIY全解析:从悬臂结构、Arduino主控到Marlin固件

本文详细解析了基于立创开源平台的桌面激光雕刻机DIY全过程。重点介绍了悬臂式机械结构的设计与优化,阐述了采用Arduino Mega 2560主控与RAMPS 1.4扩展板的经典控制方案,并深入讲解了Marlin固件的关键配置步骤,包括电机步数计算与激光功能启用,为创客和电子爱好者提供了一套完整的从硬件搭建到软件调试的实战指南。

weixin_42510201的博客 382

PHP特性知识点总结

(1)类型转换之前提到过的是字符串转为整型。其实php手册里面提到了各种类型的转换。先把他放在这里。我们按照php手册上的顺序来介绍,只介绍几个比较常用的。①转化为bool②转化为整型int。

m0_73605862的博客 1295

数据结构02:线性表 顺序表习题01[C++]

考研笔记整理~🥝🥝

weixin_42789937的博客 1362

【AI大模型:前沿】44、大模型+机器人:从自动化工具到通用智能体的技术革命与应用全景

大模型与机器人的融合催生了“具身智能体”,突破传统机器人智能化缺失、功能单一等瓶颈。大模型赋予机器人三大能力:常识推理(如热牛奶需去包装)、模糊指令解析(如“整理书桌”拆解步骤)、零样本任务泛化(如搭乐高桥)。技术实现上,通过多模态融合(视觉-语言-动作)、仿真训练(虚拟试错)和实时反馈(动态调整动作)形成闭环。主流框架如Google RT-2(端到端动作生成)、斯坦福Q-Transformer(强化学习优化)和Figure 01(ChatGPT驱动人形机器人)各具优势,可适配工业、家庭等场景。该技术正重塑

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2019

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

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

Eumenides_Suki的博客 2323

HyperLynx(二十二)DDR(五)DDRx总线时序模型设计

DDR3 的数据选通信号与时钟信号的频率是一样的,在数据选通信号写操作时,控制器典型的输出方式是数据选通信号边沿与时钟近似对齐。该界面中显示了所有需要编辑的参数,包括地址/命令信号的时序、控制信号的时序、读和写操作的数据选通和数据信号时序、写操作的数据选通和数据掩码信号时序,以及建立和保持时间的降额参数。由于DDRx总线对时序的要求非常严格,随着速率的提升,时序的要求会更高。反之也是一样的,如果数据选通信号的上升沿在时钟信号上升沿的后面到达 DRAM,那么数据选通信号的下降沿就会在时钟信号的前面到达。

小幽余生不加糖 1935

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

24王道考研复习书的题

qq_51536841的博客 926

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【王道2023考研计算机数据结构复习指导课后代码题】——06.在递增有序的单链表中删除重复元素

在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素,例如(7,10,10,21,30,42,42,42,51,70)将变为(7,10,21,30,42,51,70)。

IronmanJay 460

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

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

王道23数据结构课后习题综合应用题(第二章2.2.3)

王道考研2023 数据结构第二章2.2.3 课后习题综合应用题

m0_46946270的博客 1154

25版王道数据结构课后习题详细分析 第二章线性表 2.2线性表的顺序表示 代码题部分

从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1) 对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为 O(1)的算法,该算法删除顺序表中所有值为x的数据元素从顺序表中删除其值在给定值s和t之间(包含s和t,要求s

2406_86301373的博客 765

数据结构02:线性表 链表习题01[C++]

考研笔记整理~🥝🥝

weixin_42789937的博客 1329

王道考研数据结构代码-第二章线性表1

代码还是需要敲的,只看没用,打出来才能体会到编程的美!才能找到自己的逻辑漏洞! #include &amp;amp;amp;lt;iostream&amp;amp;amp;gt; /*------------------------------------------------------ * 2019考研数据结构 王道程序设计题目 * 章节:第一章线性表 * 平台+工具:win10+clion * 编程:倾斜的正弦波 * -...

倾斜的正弦波 1004

数据结构二轮复习大题(含暴力)

王道考研算法

Closer9的博客 481

【数据结构】强化部分笔记

数据结构二轮强化精读王道笔记

Father_Of_Soft的博客 1522

计算机考研专业课之DS数据结构与算法学习笔记开源

2025年数据结构考研复习专栏笔记,课程来自王道考研数据结构课程+B站独家开源课程,笔记记录时长两年半,囊括包含了408、自命题的数据结构的所有重点考点、冷门考点。结合近20年408的考点考察范围,未来以后的数据结构考点也不太会有什么太大变化,所以只看这一份就够了!笔记现已开源。助力26/27/28.../40 考研,如果工作面试有数据结构的考察也可以看。 此为系统自动推送,不可能不看!适用人群:于DS自命题和408统考

qq_56741313的博客 948

顺序表删除重复元素(完整代码的实现)

【问题描述】 设一顺序表有若干元素,编写程序实现删除表中值重复的元素,即重复元素只保留一个。 【输入形式】 第一行输入一个N(N不大于100),表示顺序表的长度; 第二行输入N个整数,表示顺序表元素; 【输出形式】 输出去重后的顺序表。 【样例输入】 7 2 2 2 3 3 2 2 【样例输出】 2 3 实现删除重复元素只需要在原理的顺序表中完成,所以不需要可变长的顺序表,定义一个足够长的顺序表即可 #include <stdio.h> #define MAXSIZE

w_nxsxs的博客 1万+

C语言数据结构-顺序表删除重复V2.0.0

顺序表删除重复 编写算法,在一非递减的顺序表L中,删除所有值相等的多余元素。要求时间复杂度为O(n),空间复杂度为O(1)。 函数原型如下:void del_dupnum(SeqList *L) 相关定义如下: struct _seqlist{ ElemType elem[MAXSIZE]; int last; }; typedef struct _seqlist SeqList; 提供代码 #include <stdio.h> #include <std

aiqq136的博客 3259
上一篇: 【数据结构】【线性表】王道课后习题【05.删除无序顺序表中指定范围的元素】(可直接运行)
下一篇: 【数据结构】【王道】【线性表】无头结点单链表的实现及基本操作(可直接运行)
Silver  Star
Silver Star 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄7年 1万+粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值