【问题标题】:c++, delete a node Using idc++,删除一个节点使用id
【发布时间】:2018-12-17 07:12:19
【问题描述】:

我有一个成员类,我想使用 id 删除一个节点。我为链表创建了一个结构。所有其他功能都正常工作,但我无法删除给定位置的节点。当我添加成员并显示它时它工作正常,但是当涉及到删除节点时它不起作用。

#include <iostream>

#include <string>

class member {

public:
    struct nodetype {
        int id;
        string name;
        string password;
        string type;
        nodetype* next;
    };

    member() {
        start = NULL;
    }

    void addMember(int x, string n, string p, string t) {
        nodetype* temp = new nodetype();
        temp->id = x;
        temp->name = n;
        temp->password = p;
        temp->type = t;
        temp->next = start;
        start = temp;
    }
    void showMember()
    {

        nodetype* temp = start;
        while (temp != NULL)
        {
            cout << temp->id << "\t" << temp->name << "\t" << temp->type << "\t" << temp->password << endl;
            temp = temp->next;
        }
    }

    void deleteMember(int x)
    {
        nodetype* tmp = start;

        while (tmp != NULL)
        {
            if (tmp->id == x)
            {
                nodetype* del = tmp;
                start->next = tmp->next;
                delete del;
            }
        }
    }
private:
    nodetype* start;
};

int main()
{
    member obj;

    obj.addMember(1,"joe","123","student");
    obj.addMember(2,"john","456","staff");
    obj.deleteMember(2);
    obj.showMember();


}

【问题讨论】:

    标签: c++ linked-list queue


    【解决方案1】:

    首先在删除成员函数中,你没有向前移动 tmp。你可以这样做-

    void deleteMember(int x)
    {
        nodetype* tmp = start;
        nodetype* prv = NULL;
        while (tmp != NULL)
        {
            if (tmp->id == x)
            {
               if(prv != NULL)
               {
                    prv->next=tmp->next;
               }
               else
               {
                    start=tmp->next;
               }
               delete tmp;
               break;
            }
            prv=tmp;
            tmp=tmp->next;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多