删除多个元素(C语言实现)

删除多个元素(C语言实现)删除多个元素描述格式样例题解及详细注释描述从长度为 n 的整数序列中删除指定位序的 m 个元素 按照原顺序输出剩余的元素

大家好,欢迎来到IT知识分享网。

描述

从长度为n的整数序列中删除指定位序的m个元素,按照原顺序输出剩余的元素。其中,1≤m≤n≤1000,原整数序列为a;要删除的元素位序按照严格单调递增的方式存储在序列b中,其中元素b[i]表示要从a中删除的元素的位序,输入数据保证0≤b[i]≤n-1, b[i]<b[i+1]。

例如:n=10,m=5,a={46, 7, 27, 50, 71, 79, 21, 56, 18, 77},b={0, 2, 3, 4, 5},

则删除后得到序列为{7, 21, 56, 18, 77 }

格式

输入格式
三行数据。
第1行两个正整数,分别表示n和m
第2行n个整数,表示待删除元素的序列a
第3行m个正整数,表示要删除元素的位序

样例

输入样例
10 4
2 81 64 88 55 74 6 80 41 93
0 2 4 7
输出样例
81 88 74 6 41 93

题解及详细注释

#include <stdio.h> #include <stdlib.h> #define maxn 1000 //定义顺序表的结构体 typedef struct { 
    int data[maxn]; int len; }Sqlist; //输入表的的长度 void read1(Sqlist *L) { 
    scanf("%d",&L->len); } //输入表的数值 void read2(Sqlist *L) { 
    int i; for(i=0;i<L->len;i++) { 
    scanf("%d",&L->data[i]); } } //删除操作,i是读取的表Q的数值 void del1(Sqlist *L,int i)//想一想为什么del1函数要放在del2函数的前面 { 
    int j; for(j=i;j<L->len;j++) { 
    L->data[j]=L->data[j+1]; } L->len--; } //遍历表Q的数值,并且调用del1函数 void del2(Sqlist *L,Sqlist *Q) { 
    int i; for(i=Q->len-1;i>=0;i--) { 
    del1(L,Q->data[i]); } } //输出删除后的表 void pri(Sqlist *L) { 
    int i; for(i=0;i<L->len;i++) { 
    printf("%d ",L->data[i]); } } int main() { 
    Sqlist L,Q;//创建表L,Q read1(&L);//调用read1函数,读取L长度 read1(&Q);//同上 read2(&L);//调用read2函数,读取数值 read2(&Q);//同上 del2(&L,&Q);//调用del2函数,删除操作。注意先del2,del2中有del1 pri(&L);//输出表 } 

在这里插入图片描述

我是调用read1和read2函数读取输入,大家也可以直接在主函数里面直接读取读取输入,尝试写一下。若有更好的想法,还请评论区指教。

写于2021年7月21日00:01分,晚安,各位。


如果这篇文章对你帮助很大,麻烦帮忙,点下友情链接: 鱼儿项目网,进去之后切换几个页面,停留几十秒。感激不尽。里面有一些免费项目大家也可以看看

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/153426.html

(0)
上一篇 2025-03-03 22:15
下一篇 2025-03-03 22:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信