CPP-101: Двусвързан списък с водещ елемент

Член-функция insert

За вмъкване на елемент в списъка се използва член-функцията insert. Семантиката на тази член-функция ще имитира поведението на член-функцията insert в класа std::list на стандартната библиотека.

iterator insert ( iterator position, int val );

Член-функцията вмъква нов елемент със стойност val преди елемента, към който е насочен итератора position. Функцията връща итератор, насочен към новия елемент, добавен към списъка.

Вмъкване на елемент в списък

При реализиране на член-функцията insert създаваме нов елемент

Node* n=new Node(val);

който трябва да бъде вмъкнат меджу елементите, към които са насочени указателите it.current_ и prev=it.current_->prev_.

Вмъкване на елемент в списъка

Фукцията връща итератор, насочен към новият елемент:

class List {
    ...
public:
    ...
    iterator insert(iterator it, int val) {
        Node* n=new Node(val);
        Node* prev=it.current_->prev_;
        
        n->next_=it.current_;
        it.current_->prev_=n;
        
        prev->next_=n;
        n->prev_=prev;
        
        return iterator(this,n);
    }
    ...
};
Публикувано в CPP-101, Кръг 2, ООП с етикети , , . Постоянна връзка.