南邮NOJ 1014 数据的插入与删除
数据的插入与删除
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 1796 测试通过 : 355
主要是无元素情况下的考虑。
总提交 : 1796 测试通过 : 355
题目描述
在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。
输入
第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。
第二行是要插入的数。
第三行是要删除的数。
输出
第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。
第二行输出插入后自小到大排好序的数,以“,”隔开。
第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。
样例输入
100 98 79 63 44 99 -1
88
79
样例输出
44,63,79,98,99,100
44,63,79,88,98,99,100
44,63,88,98,99,100
#include<iostream> #include<algorithm> #include<math.h> #include<stdlib.h> #include<stdio.h> using namespace std; int comp(const void *a,const void *b) { return *(int*)a-*(int*)b; } int main() { int n,i=0; int a[10000+1]; while(scanf("%d",&n)==1&&n!=-1) { a[i++]=n; } int in,de,c=0,p=0; scanf("%d",&in); scanf("%d",&de); if(i==0) { printf("No elements.\n"); a[i++]=in; printf("%d\n",in); if(in!=de) printf("%d\n",in); else printf("No elements.\n"); } else { qsort(a,i,sizeof(int),comp); for(int j=0;j<i;j++) { if(j==0) printf("%d",a[j]); else printf(",%d",a[j]); } printf("\n"); a[i++]=in; qsort(a,i,sizeof(int),comp); for(int j=0;j<i;j++) { if(j==0) printf("%d",a[j]); else printf(",%d",a[j]); } printf("\n"); for(int j=0;j<i;j++) { if(a[j]!=de){ p++; if(c==0){ printf("%d",a[j]); c++; continue; } if(c==1) { printf(",%d",a[j]); } } } if(p==0) { printf("No elements."); } printf("\n"); } }
主要是无元素情况下的考虑。
版权声明:本文为博主原创文章,未经博主允许不得转载。
posted on 2015-03-21 16:35 Tob__yuhong 阅读(186) 评论(0) 编辑 收藏 举报