функция удаления элементов по ключу

  • Автор темы -
  • Дата начала

0

Гость
#1
Не могу сообразить как короче и проще.
C++:
List DeleteKey(List p, int x)
{
List qpre=p;
List q=p;
List s=p;
if (p&&p->key==x)
{
q=p;
p=p->next;
s=p;
while (p)
{
while (p&&p->key!=x)
{
qpre=p;
q=p->next;
p=p->next;
} 
if (p)
{
qpre->next=p->next;
p=p->next;
}
delete q;
//}
}
p=s;
return p;
}
else
{
s=p;
while (p)
{
while (p&&p->key!=x)
{
qpre=p;
q=p->next;
p=p->next;
} 
if (p)
{
qpre->next=p->next;
p=p->next;
}
delete q;
//}
}
p=s;
return p;
}
}