Язык С++ и программирование на нем. Рейзлин В.И. - 145 стр.

UptoLike

Составители: 

147
Для вставки нового элемента в начало списка достаточно, чтобы
указатель p принял значение адреса заглавного элемента списка: p=h;
Удаление элемента
Возможность двигаться по указателям в любом направлении по-
зволяет задавать исключаемое звено указателем p непосредственно на
само это звено:
p->next->pred = p->pred;
p->pred->next = p->next;
delete p;
Поиск элемента
Пусть h указатель на заглавный элемент списка, r указатель,
который будет указывать на найденное звено, содержащее k. Пусть
также p, q переменные типа elem*, b типа int. Поиск элемента, со-
держащего число k, осуществляется так:
b=1; h->data = k+1; // В информационную часть заглавного
звена
// заведомо занесём число, отличное от k.
p=h->next; // Сначала p указывает на первое звено.
r=NULL;
q=p; // q указывает на первое звено.
do {
if (p->data= =k){
b=0;
r=p;
}
p=p->next;
}while ((p!=q) && b);
Заметим, что если в списке вообще нет звена, содержащего k, то
после поиска значение b останется равным единице, указатель r будет
равен NULL, а p примет значение q, т.е. снова будет указывать на пер-
вое звено (после заглавного).
25. Стеки
В программировании часто используется структура данных, кото-
рая называется очередью. Над очередью определены две операции за-
несение элемента в очередь и выбор элемента из очереди. При этом вы-
бранный элемент исключается из очереди. В очереди доступны две по-
зиции ее начало (из этой позиции выбирается элемент из очереди) и