0

我有一个双向链表,其中存储播放器对象。玩家对象包含名字、姓氏、等级和经验。我试图创建一个删除重复播放器对象的函数。例如,如果我输入 Luis suarez 然后再次输入,我希望该功能要求用户输入重复的名称并删除其中一名 luis suarez 球员(最好是列表中的最后一名)。我已经尝试了很多东西,但它们都不起作用,也没有删除任何东西。谁能帮我这个?

这是我在 RemoveDuplicate 的尝试:

// -------------------------------------------------------------------------------------------------------
//  Name:           RemoveDuplicates.
//  Description:    Searchs through the list and finds duplicates and removes one.
// -------------------------------------------------------------------------------------------------------

void RemoveDuplicates(DoublyLinkedListIterator<Datatype> m_itr, string searchByFirstName)
{
    Stats player;
    string playerDuplicate = player.getFirstName();
    for (m_itr.Start(); m_itr.Valid(); m_itr.Forth())
        {
            if (m_itr.Item().getFirstName() == searchByFirstName)
            {
            playerDuplicate = m_itr.Item().getFirstName();
            }
        }
    delete(playerDuplicate);
}

我的 stats 类有 4 个带有 getter 的成员变量。

private:
    string firstName;
    string secondName;
    int level;
    int experience;

在我的链表中,我有 3 个类。

DoublyLinkedListIterator;
DoublyLinkedList;
DoublyLinkedListNode;

任何帮助是极大的赞赏。

编辑:后续行动:从 DoublyLinkedList 中删除重复项

4

1 回答 1

1

看起来您必须删除链表中的实际节点(使用迭代器)。现在您只是在本地字符串变量 playerDuplicate 上使用 delete。

后续全面解决。

于 2013-04-20T20:20:30.647 回答