【数据结构】删除无序顺序表中所有重复的元素(C++实现)

本文介绍了如何使用C++从无序数组中删除重复元素。作者提供了两种解题思路,包括先排序再处理和通过新建数组判断元素是否重复。文章附带了完整的代码实现,展示了如何在C++中检查数组中是否存在特定元素,并给出了去重后的数组输出。
摘要由CSDN通过智能技术生成

一、前言

最近在复习王道老师的《数据结构考研复习指导》这本书,第2章线性表的课后题,有一题比较有意思:

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

从有序的顺序表中去除重复元素还是很简单的,但是,如果从无序的顺序表中去重要怎么实现呢?下面分享一下我的解题思路

二、解题思路

思路1

其实可以先给无序的顺序表做个排序,变成有序的顺序表,也就是“降维打击”,按照有序顺序表的方法做即可。

思路2

换个思路,如果学过Python的同学,应该会知道Python里有一个操作:

key in dict

如果键key在字典dict里(这里的字典也可以是列表、数组等),则返回true,否则返回false。

而在C++中,并没有这样的操作,所以我的思路就是在C++中实现这样的操作,以此判断是否有重复的元素。

接下来就简单了,假设待去除的是数组A,我们新建一个数组B用来存放不重复的元素,然后遍历数组A中的所有元素,如果数组A中的第i个元素不在数组B中,则把该元素添加到数组B中。然后重复这个操作,直到数组A遍历结束。

下面我们来看一下怎么用代码实现这个思路。

三、代码实现

为了保存我在学习过程中写的代码,我在GitHub上开了一个仓库,欢迎大家互相学习:

今天的这段代码也已经上传,保存在start_c_plus_plus/test/deduplication.cpp

1.判断元素是否在数组中

bool repeat(int *List, int num) {
   
    int List_length = sizeof(List)/sizeof(int); // 数组长度
    for (int i=0; i<=List_length; i++) {
   
        if (List[i] == num) {
    // 判断数组内是否存在元素num
            return true; // 存在,则返回ture
        }
    }
    return false; // 不存在,则返回false
}

2.主函数

int main() {
   
    int List[
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr.郑先生_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值