从C ++双向链接列表中删除单个项目

时间:2015-03-25 04:36:33

标签: c++ list double

我有一个类是Doubly Linked List类,包含带有一个int数据和两个节点prev和next的标准结构。在类中,但在结构之外我还有标准的两个节点,head和tail。我有其他功能,所以我建立了双链表。我现在想要使用类函数删除双向链表中的单个值,例如数据。它可以是一个“索引”或我正在寻找的值,或者。我怎样才能做到这一点?当我尝试删除头部时,我最终只删除了整个列表。这是我的尝试:

void DLList::delItem ()
{
    while(head != NULL)
    {
        if(head->data == 1)
        {
            delete head;
        }
        else{
            head = head->next;
        }
    }
}

这是构造函数:

DLList::DLList()
{
    struct Node
    {
        int data;
        Node* prev;
        Node* next;
    };
    Node* head;
    Node* tail;
}

我还有一个打印值的功能。它工作一次,但随后不再打印值。我不确定他们之后是否会被删除。这是打印功能:

void DLList::print()
{
    Node* temp3 = head;
    while(temp3 != NULL)
    {
        cout << temp3->data << " ";
        temp3 = temp3->next;
    }
    cout << endl;
}

1 个答案:

答案 0 :(得分:0)

查看CodeProject上的这篇文章:Implementing Doubly Linked List

BTW考虑不发明轮子并使用std :: list