可以使用双重循环,逐一对比元素,如有重复,则删除的方法去重。
依次遍历循环中的每一个元素。对于任意一个元素,依次与之前的元素进行对比,如果有重复则删除。删除操作可以采用将后续元素逐个前移,达到覆盖当前元素的效果。
int remove(int *arr, int sz)
{
int i = 0;
int index = 0;
for (i = 1; i < sz; i++) {
if (arr[index] != arr[i]) { //依次向后比较,若不相等,则用arr[i]覆盖arr[index+1],否则(遇到的是重复元素),i往后移
arr[++index] = arr[i]; //当index与i之间没有其他元素,index + 1 就是i哦,相当于index后移,但是值没改变
} //当index与i之间有其他元素,那么这些元素必定是重复得了,直接覆盖掉
}
return index + 1;
}
完全参照你的思路改的。
只用一个数组,找相同,删其中一个,数组需要移位。
#include <stdio.h>
#define N 10
int main()
{
int a[N];
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
printf("源:
");
for(int i=0;i<N;i++)
printf("%d ",a[i]);
//------------------修改部分,其他与你源码一致-------------------------------
int find,i,j,k,n=N;
while(1)//循环检查,直到没有相同数值元素
{
find=0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])//找到两个相同的,删除后一个a[j],数组移位,最大长度n值改变,并跳回最外层循环,开始新一轮检测
{
for(k=j;k<n-1;k++)//删除并移位
a[k]=a[k+1];
n--;//长度减一
find=1;
break;
}
}
if(find==1)
break;
}
if(find==0)
break;
}
printf("
处理后:
");
for(i=0;i<n;i++)
printf("%d ",a[i]);
//-------------------------------------------------------------------------------
return 0;
}
在JAVA中如何从数组中删除一个元素的程序如下:
package org.usc.action;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] str={"张三","李四","王五","宋六","赵七","朱八","何九","田十"};
List<String> list=Arrays.asList(str);//将数组转换为list集合
if(list.contains("张三"))
{//加入集合中包含这个元素
///这个时候我们直接移除会报错,所以我们要转换为Arraylist
//list.remove("张三");
List<String> arrayList=new ArrayList<String>(list);//转换为ArrayLsit调用相关的remove方法
arrayList.remove("张三");
for(String str1:arrayList ){
System.out.print(str1+",");}
}}
部分解释:
1、remove这些method时出现java.lang.UnsupportedOperationException异常。
2、这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList, remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
3、ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等, 所以throw UnsupportedOperationException。
扩展资料:
因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集。
Java允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。
异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有