题目:

思路:

这个题目相对来说主要思路在于SLPop这个函数的设计上。

如果找到了等于m的数,那么需要分情况来讨论:

第一种情况就是普通情况,也就是在中间找到等于m的数,那么之需要把每个数依次向前挪动一个位置即可,并且这是的size要减少一个。

第二种情况就是在末尾的时候找到等于m的数,这时就不能够再去把后面的数移动在前面来,因为这样就会造成数组访问越界,只需要把size较少一个即可。

还需要注意的一个问题:

当每一次找到等于m的数时,我们都完成了后数的移动到前面的过程,那么这时我们需要用continue来跳过后面的i++这一步,因为还得继续判定后面移到这个位置上面来的数是否等于m,如果不等于那么直接i++即可。

代码:

#include<stdio.h>
#include<stdlib.h>
#define N 100
typedef struct SList
{int data[N];int size;
}SL;
void SLInit(SL* ps)
{ps = (SL*)malloc(sizeof(SL));ps->size = 0;
}
void SLCreate(SL* ps, int n)
{int x = 0;ps->size = n;for (int i = 0; i < ps->size; i++){scanf("%d", &x);getchar();ps->data[i] = x;}
}
void SLPop(SL* ps, int m)
{int i = 0;while (i < ps->size){if (ps->data[i] == m){if (ps->size == i){ps->size--;}//这里主要是处理当最后一个数等于m时else{int j = i;while (j + 1 < ps->size){ps->data[j] = ps->data[j + 1];j++;}ps->size--;}continue;//如果等于m时处理完过后,将后面的数依次向前移动一个位置//跳出本次循环,主要是为了不让i完后移动//因为不确定从后面移动过来的数是否等于m}i++;//i不断向后迭代}
}
void SLPrint(SL* ps)
{for (int i = 0; i < ps->size; i++){printf("%d ", ps->data[i]);}
}
int main()
{SL plist;SLInit(&plist);int n = 0;scanf("%d", &n);getchar();SLCreate(&plist, n);int m = 0;scanf("%d", &m);SLPop(&plist, m);if (plist.size == 0){printf("-1");}else{SLPrint(&plist);}return 0;
}

数据结构之SWUSTOJ1038: 顺序表中重复数据的删除相关推荐

  1. 查询和删除表中重复数据sql语句

    查询和删除表中重复数据sql语句 (一) 1.查询表中重复数据.select * from people where peopleId in (select   peopleId  from   pe ...

  2. MySql删除表中重复数据

    有一表中存在大量重复数据 在此记录下我删除表内重复数据的方法 -- 新增测试表 create table basic_farmer ( id INT(11), user_name VARCHAR(25 ...

  3. 删除顺序表中重复元素,并按照原序输出

    问题描述:从顺序表中删除重复的元素,并使得剩余元素间的相对次序保持不变. 解决思路: PS:将结果表归为一个新表,理解较为容易(接下来以旧表和新表相称) ①先定义新表的长度和迭代器(初始长度为1,迭代 ...

  4. SQL Server数据库表的基本操作(批量插入、删除、查询数据,删除表中重复数据方法)

    实验名称:数据库表的基本操作与表内数据操作 实验目的: 掌握数据库表创建方法(交互式.T-SQL法) 掌握修改数据库表结构的方法 掌握删除数据库表的方法 掌握交互式EXCEL文件录入数据至数据库表的方 ...

  5. sql server如何删除表中重复数据

    当我们需要删除表中重复的数据的时候,该如何操作呢? 具体操作分为四个步骤: 1.将查询到的无重复数据存入临时表中 2.删除原表的内容 3.将临时表插入到原表中 4.删除临时表 理解起来是比较简单的,这 ...

  6. 删除数据库表中重复数据

    这里的重复数据指数据库中每一列的值都相同的数据,有时候也许是没有主键的原因导致数据可能重复,或者是,除了主键,其他数据重复,那么下面的方法可以都这些重复数据进行删除,保留下重复数据中的一行就可以. 大 ...

  7. 删除数据库表中重复数据的总结(oracle)

    这里的重复数据指数据库中每一列的值都相同的数据,有时候也许是没有主键的原因导致数据可能重复,或者是,除了主键,其他数据重复,那么下面的方法可以都这些重复数据进行删除,保留下重复数据中的一行就可以. 大 ...

  8. mysql 删除表中重复数据并保留一条

    最近有个需求,给角色添加菜单权限,这是一个role_menu 表.里面存放的是角色id和菜单id,是批量给一种类型角色添加,但有可能角色人为添加过,因为数据量还是比较大的,如果先查询这个有没有添加过再 ...

  9. mysql视图中可以删除数据吗_sql問題 删除视图中的数据,表中的数据会删除吗?

    如果你那个视图,是 单表的, 没写 触发器的. 那么 如果 删除视图中的数据 成功了,那么 表中的数据 就被删除了. 如果那个视图, 写了个 INSTEAD OF 触发器. 但是里面没有任何删除的动作 ...

  10. mysql删除表中所有数据_MySQL删除或清空表中数据的方法

    原标题:MySQL删除或清空表中数据的方法 要想把MySQL中的数据删除或清空,可以通过两种方法来实现:DELETE语句和TRUNCATE TABLE语句. DELETE语句可以将表中所有记录都删除, ...

最新文章

  1. 开课啦 dubbo-go 微服务升级实战
  2. python 验证码识别 阿里云_python3调用阿里云图像识别OCR-实现验证码识别
  3. 如何才能更容易拿到大厂Offer?从理论到实践!
  4. 怎么在Linux系统下使用NTFS的U盘或者是分区以及移动硬盘-使用工具NTFS-3G
  5. android usb没有读写节点,2019踩坑无数含泪写下最新教程系列(三)树莓派挂载android(树莓派通过usb读取手机里面档案)...
  6. 开源电子商务平台:OfBiz
  7. 用perl操作word
  8. java 睡眠时间_java中sleep()的用法(毫秒)
  9. python股票预测_python用线性回归预测股票价格的实现代码
  10. 关键应用在超融合环境下的实践
  11. xgen 毛发guide历史被清理解决方法
  12. 服务无法注册到注册中心解决
  13. 小程序导航栏透明,精准设置小程序自定义标题的高度和定位
  14. B.ljw 养蔷薇(普通莫队)
  15. php试题判断ip是否合法,php检测IP地址是否合法的方法
  16. 智慧建造管理平台施工现场视频监控系统
  17. win10 nginx部署静态资源服务器和HTML
  18. 七日杀修改服务器名称,七日杀怎么改名字_联机改名字方法_快吧单机游戏
  19. 台式计算机鼠标型号和价格,力胜鼠标价格和型号汇总【图文】
  20. SDN交换机的拓扑发现与ARP处理

热门文章

  1. 计算机应用基础—多媒体技术(二)
  2. Router Support for Fine-Grained Latency Measurements阅读笔记
  3. 使用python建立一个网站:笔记3 建立自己网站主页
  4. Python实现分卷压缩
  5. 虚拟化是什么意思?包含哪些技术?与私有云有什么区别?
  6. 自动驾驶基础——惯性测量单元(IMU)
  7. 跨境电商如何利用Quora帮你引上万流量
  8. CSI笔记【10】:阵列信号处理及MATLAB实现(第2版)阅读随笔(二)
  9. 基于c#的IE 代理服务器设置
  10. python逐行读取xls文件