zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

     

      

  • 相关阅读:
    什么是 CLR
    常用的数据结构以及算法
    Array和ArrayList的异同点
    什么是CMS?
    .NET Framework3.0答疑
    C#中的委托
    C#速成之三(Quick C#)
    C#速成之五(Quick C#)
    C#速成之四(Quick C#)
    类,对象,封装,接口,多态,继承
  • 原文地址:https://www.cnblogs.com/wxt19941024/p/7054540.html
Copyright © 2011-2022 走看看