题目描述:在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。
题目链接:点击打开链接
#include <iostream>
using namespace std;
int main()
{
int a[10000];
//static int a[10001];
int b;
int i =0;
int x,y;
cin >> b;
//先读取数据
while ((b != -1)&&(b>=0))
{
a[i] = b;
i++;
cin >> b;
}
//读取要添加的数据
cin >> x;
//读取要删除的数据
cin >> y;
if (i>0)
{
//对读取的数据进行排序,最原始的数据用j
for (int j = 0;j<i;j++)
{
for (int k=j+1;k<i;k++)
{
if (a[j] > a[k])
{
int temp;
temp = a[k];
a[k] = a[j];
a[j] = temp;
//swap(a[j],a[k]);
}
}
}
//显示部分
for (int j=0; j<i-1;j++)
{
cout << a[j] << ",";
}
cout << a[i-1];
}
else
cout << "No elements.";
cout << endl;
//添加数据后排序,用n
if (i>0)
{
for (int n=0; n<i;n++)
{
if (a[n] > x)
{
for (int m=i-1;m>=n;m--)
{
a[m+1] =a[m];
}
a[n] = x;
break;
}
}
for (int j=0; j<i;j++)
{
cout << a[j] << ",";
}
cout << a[i];
cout << endl;
}
else
{
cout << x << endl;
}
//删除数据后排序,用p,q
int e = i+1;
int p=0;
if (e==1)
{
}
else if (e>1)
{
while ( p < e)
{
if (a[p] == y)
{
for (int q=p ; q<e;q++)
{
a[q] = a[q+1];
}
e = e-1;
continue;
}
p++;
}
}
if (e>1)
{
for (int j=0; j< e-1;j++)
{
cout << a[j] << ",";
}
cout << a[e-1];
}
else
cout << "No elements.";
cout << endl;
return 0;
}
本题几个点:
1,要将输入的数据进行排序,我没有用比较好的排序方法,只是用了冒泡排序(好像是的,没有系统的学过数据结构),其中交换数据的那部分代码,原先是直接使用swap函数,但是怎么也不能通过,后经论坛高人指点修改了代码,后来就通过了!
2, 将指定的数插在已经排序的序列中,好像数据结构中有。
3,删除相同数据也有!
整体感觉自己的代码量太少,没有系统性,都是修修改改的,没有主题思想什么的,还是要多练习!