Вставить узел перед указанным элементом

У меня есть стек, и мне нужно вставить узел перед указанным элементом, и этот код работает, но мне нужен код без count и count1, потому что сортировка не работает. Можете ли вы помочь мне переделать код? Я пытался что-то сделать с кодом, но это не работает

void Stack::stackA(Item *q,Item *q1) // q - specified element, q1 - new element
{

int count=0;
int count1=0;
for (Item *i=this->first;i;i=i->next)
{
count++;
if (*i == *q)  // Here we find position of the specified element
break;
}for (Item *i=this->first;i;i=i->next)
{

Item *temp=new Item(*q1);

if(*this->first == *q)  // if element first
{
this->first=temp;
temp->next=i;
break;
}
if (count1+1==count-1) //count-1,insert before specified element
{
if(i->next)
temp->next=i->next;
else
temp->next=0;
i->next=temp;
}
count1++;
}
}

0

Решение

Цель здесь — найти узел до qустановите его next в q1затем установите q1->next в q

void Stack::stackA(Item *q,Item *q1) // q - specified element, q1 - new element
{
Item* item = this->first;
if (item == q) {
this->first = q1;
q1->next = q;
return;
}
while (item != null) {
if (item->next == q) {
item->next = q1;
q1->next = q;
break;
}
item = item->next;
}
}

Обновление: обрабатывается случай, если q это первый пункт.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]