Двусвязный список. Перед элементами кратными 5 вставить элемент "5"
Вообще само задание - Перед элементами кратными 5 нужно вставить цифру 5.
Вот код структуры
typedef struct SNum
{
int num;
SNum * next;
SNum * prew;
} TNum;
TNum * Start;
Как это можно реализовать? Просто не могу понять как элемент который вставился в список связать со следующим и предыдущим.
Ответы (1 шт):
Автор решения: Герман Борисов
→ Ссылка
Перебираем поочередно все элементы.
Если у очередного num кратно 5, то
Создать новый элемент.
У нового элемента next установить на текущий, prev на prev текущего.
У текущего prev установить на новый.
Если prev нового заполнен (старое значение prev текущего), то обратиться к тому элементу и установить его next на новый элемент.
TNum *wp=Start;
int a =5;
while (wp!=NULL) {
if (wp->num%5==0 ) {
TNum *pNew = new TNum;
pNew->num = a; // 5 у нового.
pNew->next = wp; // У нового элемента next установить на текущий
pNew->prew = wp->prew;
wp->prew = pNew;
// wp->num = a; текущий не трогаем.
if (pNew->prew !=NULL) { //Если prev текущего заполнен
pNew->prew->next = pNew; // то обратиться к тому элементу и установить его next на новый элемент.
}
if (wp = Start) { // Если обрабатываем первый элемент,
Start = pNew; // то первым становится новый.
}
}
wp = wp->next;
}