线性表去重

在一个线性表中可能包含有重复节点。重复节点是指数据域的值相同的节点。试编写一个删除重复节点,只保留其中序号最小的一个的算法。例如,线性表(3,1,2,1,5,3,1)经过删除重复节点运算后为(3,1,2,5)

import java.util.*;

public class DeWeighting {
public static void main(String[] args) {
// 初始化一个线性表
List<Integer> xianxingbiao = new ArrayList<>();
// 在线性表中放入数据
xianxingbiao.add(3);
xianxingbiao.add(1);
xianxingbiao.add(2);
xianxingbiao.add(1);
xianxingbiao.add(5);
xianxingbiao.add(3);
xianxingbiao.add(1);
// 调用自己写的函数处理 xianxingbiao, deweighting 是去重的意思
deweighting(xianxingbiao);
}

// 3 1 2 1 5 3 1
public static void deweighting(List<Integer> xianxingbiao) {
// 创建一个集合 set,只要元素出现就进入set
// 如果下一个元素在 set 中存在,说明该元素出现过
Set<Integer> set = new HashSet<>();
// 初始化线性表下标
int index = 0;
// 循环条件:下标小于线性表大小
while(index < xianxingbiao.size()) {
// 使用下标获取线性表当前元素
int curNum = xianxingbiao.get(index);
// 若 set 中包含当前元素,说明该元素出现过,需要去除
if (set.contains(curNum)){
// 使用当前下标 remove 该元素
xianxingbiao.remove(index);
// 由于 remove 了一个元素,线性表大小减一,index 也需要减一
index--;
} else {
// set 中没有该元素,说明该元素没出现过,把它加入 set 中
set.add(curNum);
}
index++;
}
// 遍历线性表输出结果看一下: 3 1 2 5
for (Integer n : xianxingbiao) {
System.out.print(n + " ");
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值