Наверное, самой интересной функцией будет добавление добавление нового элемента в середину списка. С ее помощью можно отыскать то место, в которое необходимо добавить новый элемент списка. Напомню, что в цикле статей уже рассматривались добавление нового элемента в начало списка и добавление нового элемента в конец списка.
Принцип работы таков, что мы добавляем новый элемент в список после уже существующего элемента с заданным значением поля inf1. Покажу реализацию для однонаправленного циклического списка:
bool insert (Elem* first, int search, int inf1) { if (!first) return false; Elem* cur=first; while ((cur->next!=first) && (cur->inf1!=search)) { cur=cur->next; } if (cur->inf1==search) { Elem* n=new Elem; n->inf1=inf1; n->next=cur->next; cur->next=n; return true; } return false; }
Как Вы, наверное, поняли, функция возвращает true при успешном добавлении и false при неудачном.
Comments ( 0 )