无法从C ++中的链表中删除

时间:2015-10-04 01:16:26

标签: c++ class struct singly-linked-list

我有一个从链表中删除的功能。链表中的每个节点都是动态创建的结构。要删除,我传递一个数据值,我想在节点列表中搜索。如果其中一个节点包含该数据,我想删除包含该数据的整个节点。它看起来好像被添加了,但每当我删除时,size变量会减少,但节点仍然在列表中。

在Mag.h:

struct ListNode 
{
    int* data;
    ListNode* nextNode;
};

class Mag 
{
private:
    ListNode* head;
public:
    Mag();
    Mag(Mag& mag);
    Mag &operator= (const Mag &);
    ~Mag();
    int size;
    void add(const int&);
    void remove(const int&);
    void printList();
    };
}

我将节点添加到列表中:

// adds to front of list
void Mag::add(int const &num) 
{
    Node* new_data = new ListNode();
    new_data->data = num;
    new_data->next = head;
    head = newNode;

    size++;
}

现在我在这里删除它们(可能是问题):

void Mag::remove(int const &num) 
{
    if (head == NULL)
        return;

    int look_for = num;
    ListNode* searchFor = head;
    int count = 0;
    count = size;

    if (count != 0) 
    {
        do 
        {
            if (searchFor->data == look_for) 
            {
                ListNode* delete_node = new ListNode;
                delete_node = searchFor;
                searchFor = searchFor->next;

                size--;
                delete delete_node;
                return;
            }

            searchFor = searchFor->next;
            count--;

        } while (count != 0);
    }
}

0 个答案:

没有答案