我有一个基本的链表问题,下面已尝试解决。我会很感谢我提供的方法,算法的正确性(甚至编码风格)方面的投入。该问题需要一个函数,该函数删除循环链接列表中所有出现的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/