java - 我需要删除链表中的一个节点,如何找到它之前的节点以便重新排列列表?

标签 java list linked-list

这是学校作业。我必须使用一种搜索方法,该方法返回我搜索的节点或它之前的节点(如果它不存在)。显然,如果我想删除一个节点,它将返回该节点,并且我将无法找到它之前的节点。这是搜索方法的代码:

private myNode search(myEntry searchEntry)
{
  myNode ref = first;
  myNode pre = null;

  while(ref != null)
  {
     if(searchEntry.compareTo(ref.data) < 0)
        break;
     pre = ref;
     ref = ref.link;
  }
  return pre;
}

first 是第一个节点,ref 是指针,pre 是指针之前的节点。 如果不需要我重写太多东西,也许我会使用双向链表,但如果有一种简单的方法可以找到我尝试使用此搜索方法删除的节点的前身,那么我想知道。我根本不应该使用双向链表。

最佳答案

您的搜索方法无法做到这一点。您必须实现一个独特的搜索方法,该方法返回节点的前任节点,然后将其删除。

关于java - 我需要删除链表中的一个节点,如何找到它之前的节点以便重新排列列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302126/

相关文章:

java - 这可以防止 Java 中的溢出吗?

python - 在 pandas 中,如何从字典列表创建数据框?

ruby - Ruby 的停用词列表

java - JNA .FindWindow 与正则表达式

java - 使用 try-with-resources 关闭一个 Closeable

java - 如何从 hibernate 中的类型化查询返回不是实体的对象列表?

python - 从 python 中的列表生成所有可能的 2 和 3 字符串组合

c - 链表递归排序是我的逻辑错误吗?

java - 用两个键映射一个值?

C 二维数组转化为链表