南邮OJ 1014 数据的插入与删除

题目描述:在一组数据(数目不超过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,删除相同数据也有!

整体感觉自己的代码量太少,没有系统性,都是修修改改的,没有主题思想什么的,还是要多练习!

你可能感兴趣的:(代码,南邮OJ,数据插入和删除)