Я хотел написать алгоритм, который начинает удалять вхождения элемента, заданного после его k-го вхождения, но тот, который я построил, удаляет все его вхождения! Могу ли я получить помощь, чтобы улучшить мой алгоритм? заранее спасибо.
typedef struct list
{
int data;
struct list *next;
}list;
list * delete_2(list *head,int element,int k)
{
list *previous,*temp,*new_head=head; previous=temp=NULL;
bool stop=true; int i=0;
if(head == NULL) return NULL;
while(head != NULL)
{
if(new_head->data == element && stop)
{
if(i>=k)
{
temp=head;
new_head=head->next;
head=new_head;
free(temp);
}
else i++;
}
else if(head->data==element)
{
if(i>=k)
{
if(head->next==NULL)
{
temp=head;
previous->next=NULL;
head=head->next;
free(temp);
}
else
{
temp=head;
previous->next=previous->next->next;
head=head->next;
free(temp);
}
}
else i++;
}
else
{
previous=head;
head=head->next;
stop=false;
}
}
return new_head;
}