数据的插入与删除

来源:互联网 发布:微刊制作软件 编辑:程序博客网 时间:2024/05/14 22:59
  • Description

在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。

  • Input

第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。

第二行是要插入的数。

第三行是要删除的数。

  • Output

第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。

第二行输出插入后自小到大排好序的数,以“,”隔开。

第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。

  • Sample Input

100 98 79 63 44 99 -1
88
79

  • Sample Output

44,63,79,98,99,100
44,63,79,88,98,99,100
44,63,88,98,99,100

#include<stdio.h>#include<stdlib.h>#include<math.h>int cmp(const int*a,const int*b){return *a-*b;}int main(){     int a[10001]={5},i,j,x,n=0;    do    {        scanf("%d",a+n);        n++;    }while(a[n-1]!=-1);    n--;    if(n==0)    {        printf("No elements.\n");}    else    {qsort(a,n,sizeof(a[0]),cmp);    printf("%d",a[0]);    for(i=1;i<n;i++)        printf(",%d",a[i]);    printf("\n");    }    scanf("%d",&x);    if(n==0)        a[0]=x;    else    {        for(i=0;i<n;i++)        if(x<=a[i])        {            for(j=n;j>=i+1;j--)               a[j]=a[j-1];            a[i]=x;            break;        }        if(i==n)            a[n]=x;    }    n++;    printf("%d",a[0]);    for(i=1;i<n;i++)            printf(",%d",a[i]);        printf("\n");    scanf("%d",&x);    i=1;    if(n!=1)    {        for(i=0;i<n;i++)        if(a[i]==x)        {             for(j=i;j<n-1;j++)                   a[j]=a[j+1];            n--;i--;        }        printf("%d",a[0]);        for(i=1;i<n;i++)            printf(",%d",a[i]);        printf("\n");    }    else    {        if(a[0]!=x)            printf("%d\n",a[0]);        else            n--;    }    if(n==0)        printf("No elements.\n");    return 0;}
0 0
原创粉丝点击