Изтриване на елемент от началото на списъка
За изтриване на елемент от началото на списъка дефинираме член-функция pop_front(). Преди да се опита да изтрие елемент функцията трябва да провери дали в списъка има елементи. Ако списъка е празен, то опита да изтрием елемент e грешка и функцията ще генерира изключение:
...
if(empty()) {
throw ListError("pop_front(): list is empty...");
}
...
За удобство дефинираме указатели:
Node* frontнасочен към първият елемент на списъка;Node* new_frontносечан към елемента след първия елемент на списъка – това е елементът, който ще стане начало на списъка, след като изтрием първият елемент.
За да изтрием първият елемент на списъка е необходимо да свържем елементите head_ и new_front, след което да освободим паметта заемана от елемента front:
...
head_->next_=new_front;
new_front->prev_=head_;
delete front;
...
Комбинирайки тези фрагмети код получаваме цялата дефиниция на член-функцията pop_front():
void pop_front() {
if(empty()) {
throw ListError("pop_front(): list empty...");
}
Node* front=head_->next_;
Node* new_front=front->next_;
head_->next_=new_front;
new_front->prev_=head_;
delete front;
}


