Копіювання списку

Задача

Написати функцію копіювання списку.

Рішення

Йдемо по всим елементах оригінального списку і сворюємо копію для кожного з них. Головна деталь – треба зберігати вказівник на поереднь створений елемент щоб змінити в ньому вказівниек на наступний елемент.

struct list_item { int data; list_item *next; list_item(int d, list_item *n) : data(d), next(n) {} }; list_item* copy_list(list_item *list) { list_item *newList = NULL, *newInCopy = NULL, *prevInCopy = NULL; for (list_item *curInSource = list; curInSource; curInSource = curInSource->next) { newInCopy = new list_item(curInSource->data, NULL); if (!newList) newList = newInCopy; if (prevInCopy) prevInCopy->next = newInCopy; prevInCopy = newInCopy; } return newList; }

Залишити відповідь

Зайти з допомогою: