23、删除有序数组中的元素,数组仍然有序——数组

删除有序数组中的元素,数组仍然有序

方法一:

删除一个有序数组的一个元素,采用两个数组实现
代码实现:
/*
	2017年6月19日16:16:31
	功能:删除数组中一个数据之后数组依然有序
*/
#include"stdio.h"
#define M 9

int main()
{
	int a[M] = {1,2,3,4,5,6,7,8,9};
	int b[M-1];
	int i, j, num;
	bool flag;
	printf("请输入将要删除的数据的数值:");
	scanf("%d",&num);

	for( i = 0; i < M ; i++)
	{
		if(a[i]==num)
		{
			flag = true;
			break;
		}
		
	}

	if(flag == true)
	{
		for( j = 0 ; j < i ;j++)
		{									//该数的前面的数
			b[j] = a[j];
		}
		for( j = i ; j < M-1 ;j++)
		{									//该数的后面的数
			b[j] = a[j+1];
		}
		printf("新的数组数据成员:");
		printf("
");
		for(int n = 0; n < M-1; n++)
		{
			printf("%d	",b[n]);
		}
		printf("
");
	}
	else
	{
		printf("数组中不存在该数值!!!
");
	
	}
return 0;
}
/*
	总结:
	在VC++6.0中的显示结果为:
	——————————————————————————————————————
	请输入将要删除的数据的数值:10
	数组中不存在该数值!!!

	请输入将要删除的数据的数值:6
	新的数组数据成员:
	1       2       3       4       5       7       8       9
	——————————————————————————————————————
	在两个数组中完成的操作
*/

方法二:

删除一个有序数组的指定元素,采用一个数组实现
代码实现:
/*
	2017年6月19日16:16:31
	功能:删除数组中指定数据元素之后数组依然有序
*/
#include"stdio.h"
#define M 9

int main()
{
	int a[M] = {1,2,3,6,6,6,7,8,9};
	int i, j, num;
	int count = 0;
	printf("请输入将要删除的数据的数值:");
	scanf("%d",&num);

	for( i = 0, j = 0; i < M ; i++)
	{
		if(a[i]==num)
		{
			count++;
			continue;
		}
		else
		{
			a[j++] = a[i];
		}
		
	}
	a[j] = '';
	printf("指定元素的个数  %d",count);
	printf("
");
	printf("新的数组数据元素的形式:");
	for(i = 0; i < j; i++)
	{
		printf("%d	",a[i]);
	}
	printf("
");
	  
return 0;
}
/*
	总结:
	在VC++6.0中的显示结果为:
	——————————————————————————————————————
	请输入将要删除的数据的数值:6
	指定元素的个数  3
	新的数组数据元素的形式:1       2       3       7       8       9
	——————————————————————————————————————
	在一个数组中完成的操作
*/

方法三:

#include "stdio.h"

int main()
{
	int a[16] = {1,9,9,4,0,5,0,8,0,8,9,9,5,6};
	int *pa = a;
	int i, j = 0;
	for(i = 0; i < 16; i++)
	{
		if(a[i] != 5)
		{
			a[j++] = *pa;
			pa++;	
		}
		else
		{
			pa++;
			continue;
		}

	}
	for(i = 0; i < j; i++)
		printf("%d",a[i]);
	return 0;
}

扩展:将删除的元素最后放在数组后面

#include "stdio.h"

int main()
{
	int a[15] = {1,9,9,4,0,5,0,8,0,8,9,9,5,6};
	int *pa = a;
	int i,j,k, count = 0;
	for(i = 0; i < 15; i++)
	{
		if(a[i] == 5)
		{	a[i] = a[i+1];
			count++;
			continue;
		}
	}
	k = count;
	for(j = 15 - k ; count--; j++)
	{
		a[j] = 5;
	}
	for(i = 0; i < 15; i++)
		printf("%d",a[i]);
	return 0;
}

  

 

  

原文地址:https://www.cnblogs.com/wxt19941024/p/7054540.html