Имам основен проблем със свързания списък, който се опитах да разреша по-долу. Ще се радвам на всякакви приноси относно моя подход, коректността на алгоритъма (и дори стила на кодиране). Проблемът изисква функция, която изтрива всички срещания на 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;
}