当前位置: 首页 > 知识库问答 >
问题:

如何编写从链表中删除特定对象的方法?

桑成荫
2023-03-14

我没有成功地从链表中删除特定项,方法是-public void removeFromList(string itemtoremove,LinkedList list)。

如何编写从链表中删除特定项的方法

我的代码是:

public class Node
{

    public Node next; //saves the adress
    public Person data; //saves the person

}

public class LinkedList  
{   
    private Node head; //starts from the begging

    public void AddFirst(Person data)  
    {

        Node toAdd = new Node();
        toAdd.data = data; // in data he saves the object
        toAdd.next = head;

        head = toAdd;

    }

    public void removeFromList(string itemtoremove, LinkedList List) // 
    {

        Node current = head;
        Node current1 = current.next;
        while (current1 != null)
        {

            if (current1.data.instrument == itemtoremove)
             ???

        }

    }

}

共有1个答案

姚浩歌
2023-03-14

您的方法甚至在实现算法之前就已经有问题了。您正在跳过head节点。您也不需要将链表作为参数传递给实例方法。

public void removeFromList(string itemtoremove)
{
    Node previousNode = null;
    Node current = head;
    while (current != null) //starting with current1 would ignore the head node
    {
        // we found a match
        if (current.data.instrument == itemtoremove){
            // head node is treated slightly differently
            if(current == head){
                // set the next node to the new head
                head = current.next;

                // set to null so GC can clean it up
                current = null;
                return;
            }
            else {
                //update the previous node's link
                previousNode.next = current.next;
                current = null;
                return;
            }
        }

        // move on to the next
        previousNode = current;
        current = current.next;
    }

}
 类似资料:
  • 问题内容: 我的代码有一个问题,我做了一个示例程序来显示链接列表中的emp详细信息,现在当我尝试删除特定条目时出现问题意味着它无法正常工作,希望我在代码中犯了一些错误你能建议怎么做吗? 问题答案: 您无法在列表(添加,删除…项目)上进行迭代操作。您必须使用迭代器 参见http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html

  • 问题内容: 如何从ArrayList中删除特定对象?假设我有一个如下课程: 我该如何从我的物品中删除物品 问题答案: 根据该方法删除对象。因此,您应该正确实现此方法。就像是: 要么

  • 问题内容: 我有一个JSON: 我试图删除所有以 “ umb_” 开头的属性。这在json.net中可能吗? 输出将是这样的: 使用删除我能够做到,但是不能一次全部完成。 有什么建议吗? 问题答案: 您可以先解析字符串: 更新 或: 更新#2 您可以在子句中指定更多条件: 要么 或任何您需要的。

  • 问题内容: 我试图通过代码提高效率,但是我却放屁了。我编写的这段代码很好用,并且完全满足我的需要:它检查一个数组并删除一个未知索引处的Object。但是我觉得有一种更好,更有效的编写方法。我去了Array.remove(at :),但这需要一个已知的索引。我正在使用大的O表示法,并且不知道如何使它更易于处理。有任何想法吗? 问题答案: 使用(在 Swift 4.1 和更早版本中先前称为)使用谓词在

  • 假设我有一个雇员对象列表,每个雇员类都有雇员姓名、雇员地址、工资等属性。现在我必须删除名称为“John”和Salary的雇员对象 列表empList=new ArrayList 根据我的理解,若要解雇具有上述情况的员工,我应使用以下代码: 因此,基本上上述代码将从列表中删除所需的Employee对象。如果我的理解正确,请告诉我。 除此之外,请澄清以下几点:1.当我们有数百万条记录时,我们将如何解决

  • 我如何删除Linkedlist中的对象。我有一个类帐户,里面有学生ID和学生名称。我输入列表中的对象,但是当我试图删除时,我不知道如何做。因为每次你从列表中间删除一个元素,它就会变得有组织,这意味着索引会改变。所以我如何获得学生ID属性并删除LinkedList中的对象。 样本: 我想让用户插入他想要删除的studentId,我可以做一个搜索和删除该对象的代码。 每次我从中间删除一个对象,它就会改