链接列表添加和删除功能

时间:2013-11-28 20:11:21

标签: java

我正在尝试使用项目创建一个链接列表,它似乎是添加到列表中,因为我添加了三个,长度表示它在列表中有3个项目。

我的删除功能如何工作我正在尝试从列表中删除具有三个项目的列表中的特定项目,但它只返回false并且不从列表中删除该项目

public void tableInsert (T newItem) throws TableException {
    if (head == null) 
        head = new Node(newItem);
    else {
        Node tmp = head;
        while (tmp.getNext() != null)
            tmp = tmp.getNext();
        tmp.setNext(new Node(newItem));
    }
}

这是删除功能

public boolean tableDelete (KT searchKey) {
    if (head.getItem() == searchKey) {
        head = head.getNext();
        return true;
    }

    Node current = head.getNext();
    Node prev = head;

    while (current!= null) {
        if (current.getItem() == searchKey){
            prev.setNext(current.getNext());
            return true;
        }
        prev = current;
        current = current.getNext();
    }

    return false;
}

2 个答案:

答案 0 :(得分:1)

我怀疑问题是使用==的相等比较。这会比较对象引用,而您可能需要对current.getItem()searchKey进行深度(呃)比较。

答案 1 :(得分:0)

通过使用“==”比较,您只比较对象的引用(因此除非您比较对相同对象的引用,否则总是会得到false)。您的对象应该实现可比较(在互联网上相当一些关于它的材料)或包含您自己的功能,比较适当的字段等。

此外,为什么要插入对象类型T,但删除对象类型KT?