您的位置:首页 > 编程语言 > C语言/C++

从数组A中删除在数组B中存在的元素,用C语言实现

2014-04-16 12:43 344 查看
从数组A中删除在数组B中存在的元素,用C语言实现

考验数组操作的能力,C语言的熟练程度。

//功能:从数组A中删除在数组B中也存在的数据
//输入:arrA --- 数组A
//      lenA --- 数组A的长度
//      arrB --- 数组B
//      lenB --- 数组B的长度
//输出:删除后A的长度
int DelAwhichinB(int* arrA, int lenA, int* arrB, int lenB)
{
//int lenA = sizeof(arrA);   //这里是4,自动退化为指针

int ndelcount = 0;   //记录有几个被删除
bool bsame = false;   //是否存在相同的元素
int j=0;   //删除元素后的下标

for (int i=0; i<lenA; i++)
{
bsame = false;
for (int k=0; k<lenB; k++)
{
if (arrB[k] == arrA[i])
{
ndelcount++;
bsame = true;
break;
}
}

if (false == bsame)
{
//如果在B中不存在,就放入新数组
arrA[j++] = arrA[i];
}
}

return (lenA-ndelcount);
}


测试代码:

int main(int argc, char* argv[])
{
int arrA[9] = {7,2,5,9,10,23,67, 23, 11};
//int arrB[3] = {4, 4, 4};
int arrB[3] = {7, 5, 23};
int arrlen = DelAwhichinB(arrA, 9, arrB, 3);
printf("删除后的新数组是: ");
for (int i=0; i<arrlen; i++)
{
printf("%d ", arrA[i]);
}
}


测试结果:



以上是用最简单,也最容易想到的办法实现的,可能性能不是很好。希望提出改进建议,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐