Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从C+中删除单个项目+;双链表_C++_List_Double - Fatal编程技术网

C++ 从C+中删除单个项目+;双链表

C++ 从C+中删除单个项目+;双链表,c++,list,double,C++,List,Double,我有一个双链表类,包含一个int数据和两个prev和next节点的标准结构。在类内部但在结构外部,我也有标准的两个节点,head和tail。我还有其他的函数,所以我的双链表就建立起来了。现在,我想使用类函数删除双链接列表中的单个值,例如数据。它可以是一个“索引”或我正在寻找的一个值,或者。我该怎么做?当我尝试删除head时,我最终只是删除了整个列表。以下是我的尝试: void DLList::delItem () { while(head != NULL) { i

我有一个双链表类,包含一个int数据和两个prev和next节点的标准结构。在类内部但在结构外部,我也有标准的两个节点,head和tail。我还有其他的函数,所以我的双链表就建立起来了。现在,我想使用类函数删除双链接列表中的单个值,例如数据。它可以是一个“索引”或我正在寻找的一个值,或者。我该怎么做?当我尝试删除head时,我最终只是删除了整个列表。以下是我的尝试:

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;
}
void DLList::print()
{
节点*temp3=头部;
while(temp3!=NULL)
{
下一步是收集数据;
}

cout查看这篇关于CodeProject的文章:


考虑不要发明轮子,使用STD::list < /P>类代码。如果头是类的成员,它显然会删除类。如果<代码>头<代码>是你真正的列表头,那么<代码>头=头->下总是将你的列表加起来(并且泄漏内存)。