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