数据的插入与删除
描述:在一组数据(数目不超过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(" "); 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(" "); //开始删除操作 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(" "); 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; }