我正在编写代码以从链接列表中删除重复项。代码如下:
在这里,我正在创建集合并插入所有节点的数据。如果返回true,即set中不存在元素并且之前未将其添加到Set中,它将在该set中添加该节点的数据,否则将删除前一节点的相应数据节点引用并将头指针移至下一个节点。从while循环中出来后,我们首先指向最后一个元素。如果我显示它,则它仅显示最后一个元素,而不显示重复的已删除列表。如何再次将头指针从最后一个节点放到起始节点,以便我可以打印链接列表?
final Node ref = head;
final Set<Integer> s = new HashSet<Integer>();
/*
* while (null != head.next) { final Node rn = head.next; if (!s.add(head.next.data)) { if (null !=
* head.next.next) { head.next = head.next.next; } } head = rn; }
*/
while (null != head.next) {
// final Node rn = head.next;
if (!s.add(head.data)) {
if (null != head.next) {
head = head.next;
}
}
head = head.next;
}
final boolean b1 = s.add(head.data);
if (b1 == false) {
head = null;
}
head = ref;
return head;
答案 0 :(得分:0)
您已经在Node变量ref中获取了头Node的引用,并且已使用头Node进行遍历,因此只需最后返回Node变量ref。考虑到其余代码正确,它将为您提供所需的结果。
尝试一下:
div {
border: 1px double red
}
移除head = ref!
或者如果您想使用集合从链接列表中删除重复项,则可以使用LinkedHashSet,LinkedHashSet保持插入顺序,方法如下:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<div class="container">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6 col-6">
<h3>Column A</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-6">
<div class="row">
<div class="col-12">
<h3>Column B</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
<div class="d-none d-sm-block">
<h3>Column C(a)</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
</div>
</div>
<div class="col-12 d-block d-sm-none">
<div class="row">
<div class="col-12">
<h3>Column C(b)</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p>
</div>
</div>
</div>
</div>
</div>