У меня есть класс Node
для реализации связанного списка:
class Node
{
public:
int data;
Node *next;
Node(int d){
data=d;
next=NULL;
}
};
И в классе решения у меня есть методы для вставки, удаления дубликатов, печати и т. Д .;
Теперь для removeDuplicates
моя логика:
- если следующий узел моего тока равен нулю, тогда вернуть
- , если значение тока равно следующему значению тока, затем установить рядом с текущим
- recurseсо следующим
Так вот мой код:
Node* removeDuplicates(Node* head)
{
process(head);
return head;
}
void process(Node* node)
{
cout << node->data << endl;
if(node->next==NULL)
return;
if(node->data==node->next->data)
node=node->next;
process(node->next);
}
, когда я вызываю removeDuplicate
метод, он печатает:
1
2
3
4
, как и ожидалось, но после этого, когда я снова печатаюс другим моим методом, он дает мне весь связанный список, не удаляя дубликаты: 1 2 2 3 3 4
display
метод:
void display(Node *head)
{
Node *start=head;
while(start)
{
cout<<start->data<<" ";
start=start->next;
}
}