数据的插入与删除
描述:在一组数据(数目不超过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
自己测试都通过了 系统一直提示Output Limit Exceed,不知道为何,郁闷!!!!!!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int* Select_Sort(int* a, int num);
void Swap(int* a, int* b);
int main()
{
int i = 0, j,count = 0;
int length;
int Insert, Delet;
int number_temp[10000];
int number[10000];
int Insert_number[10001];
int Delet_number[10001];
next:
while (scanf("%d", &number_temp[count]) != EOF){
if (number_temp[count] == -1) break;
number[count] = number_temp[count];
count++;
}
length = count;
count = 0;
scanf("%d", &Insert);
scanf("%d", &Delet);
Select_Sort(number,length);
//打印排序后的输出
if (length == 0){
printf("No elements.");
}
else{
for (j = 0; j < length; j++){
printf("%d", number[j]);
if ( j < length - 1) printf(",");
}
}
printf("\n");
for (i = 0; i < length; i++){
Insert_number[i] = number[i];
}
Insert_number[length] = Insert;
Select_Sort(Insert_number, length + 1);
//打印插入后的数据
for (j = 0; j < length+1; j++){
printf("%d", Insert_number[j]);
if (j < length) printf(",");
}
printf("\n");
//开始删除操作
int Delet_flag = 0;
for (i = 0; i < length+1; i++){
if (Insert_number[i] != Delet){
Delet_number[Delet_flag] = Insert_number[i];
Delet_flag++;
}
}
if (Delet_flag == 0) printf("No elements.");
else{
for (i = 0; i < Delet_flag; i++){
printf("%d", Delet_number[i]);
if (i < Delet_flag - 1) printf(",");
}
}
printf("\n");
goto next;
}
int* Select_Sort( int *a, int num)
{
int i,j;
for (j = 0; j < num; j++){
for (i = j; i < num; i++){
if (a[i] < a[j]) //选择排序,每次遍历都把最小的放到最前面
Swap(&a[i],&a[j]);
}
}
return a;
}
void Swap(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}