На этом шаге мы рассмотрим алгоритм добавления звена в конец дека.
Алгоритм добавления звена в конец дека заключается в выделении памяти под новый элемент и включение его в конец дека:
q = new(node); (*q).elem = Элем; (*q).sled = NULL; (*q).pred = *kd; (*kd).sled = q; *kd = q;
Рис.1. Вставка звена в конец дека
Приведем текст функции:
void InsRight (node **nd, node **kd,int el) // Добавление звена, содержащего элемент el, в дек справа. // *nd - указатель на начало дека. // *kd - указатель на конец дека. { node *q; q = new(node); (*q).elem = el; if (*kd==NULL) {// Если дек пуст, то... *nd = q; (*q).sled = (*q).pred = NULL; *kd = q;} else { (*q).sled = NULL; (*q).pred = *kd; (**kd).sled = q; *kd = q;} }
Со следующего шага мы начнем рассматривать алгоритмы удаления звена из дека.