我有一个基本的链表问题,下面已尝试解决。我会很感谢我提供的方法,算法的正确性(甚至编码风格)方面的投入。该问题需要一个函数,该函数删除循环链接列表中所有出现的int并从列表中返回任何节点或返回NULL(当列表为null时)。

到目前为止,这里有一些C++代码:

struct Node{
    Node* next;
    int data;
};

Node* deleteNode(Node* &node, int num){

    if(!node){
        return NULL;
    }

    Node* given = node;
    Node* del;

    while(node->next != given){
        if(node->next->data == num){
            del = node->next;
            node->next = node->next->next;
            delete del;
        }
        node = node->next;
    }

    //Check if the first node needs to be deleted, with variable node pointing to last element
    if(given->data == num){
        node->next = given->next;
        delete given;
    }

    return node;
}

最佳答案

delete node;应该是delete del;

同样,使用Node* node作为参数,而不是Node* &node,这将防止非左值传入。

ps。定义结构后忘记分号? :)

关于c++ - 删除循环链表中的节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16184876/

10-11 23:13
查看更多