java - Java:从简单链表中删除节点
问题描述
我有两个列表 ItemsList , ilist 。如果 ilist 的节点包含与 ItemsList 的节点相同的值,我必须从 ItemsList 中删除它们,但是每次我使用以下代码中的删除函数时,我的列表都是空的:
public void remove(ItemsList ilist) {
if (empty()) {
System.out.println("The list is empty.");
} else {
this.bubblesort();
ilist.bubblesort();
ItemNode a = this.first;
ItemNode b = ilist.first;
for(a=first;a!=null;a=a.next) {
for(b=first;b!=null;b=b.next) {
if(a.item==b.item) {
this.deleteNode(a.item);
}
}
}
}
}
private void deleteNode(int data) {
ItemNode prev = null;
for(ItemNode trace = first; trace != null; trace = trace.next) {
if(trace.item == data) {
if (prev == null) {
first = trace.next;
} else {
prev.next = trace.next;
}
}
else {
prev = trace;
}
}
}
假设我有 ItemsList : [0,1,2,3,4] 和 ilist : [0,1] 这意味着 0 ,1 将从 ItemsList 中删除,但是当我显示 ItemsList 时,它说它是空的。对于特定问题,我不能使用数组、数组列表或其他 java 库。感谢您的时间 。
解决方案
我会做什么:
public void remove(ItemsList iList) {
if (iList.isEmpty()) {
System.out.println("The list is empty.");
} else {
ItemNode prev = null;
ItemNode a = this.first;
while (a != null) {
for (ItemNode b = iList.first; b != null; b = b.next) {
if (a.item == b.item) prev.next = a.next;
}
a = a.next;
}
}
}
推荐阅读
- javascript - Laravel mix 未编译 Tailwind CSS .bg-color 类
- python - 为什么我的 for 循环在循环完成之前停止?
- python - 根据以下几行的值检查数据框中每一行的条件 - 非常慢的代码
- spring - Get selected value from a Thymeleaf drop down list
- python - 多次使用不同输入的 ResNet50(权重共享)
- javascript - 从 vuejs 请求时,Firebase 不返回数据
- algorithm - GIMP 阴影和高光校正算法
- android - 使用 Mic 捕获 Android 系统音频并丢弃外部噪音
- java - 使用 JDBC 连接 Android Studio-MySQL 时出现问题(错误:java.sql.SQLNonTransientConnectionException:无法创建与数据库服务器的连接。)
- ios - Swift 项目中的开源库在真实设备上运行时导致签名错误