Наверное, самой интересной функцией будет добавление добавление нового элемента в середину списка. С ее помощью можно отыскать то место, в которое необходимо добавить новый элемент списка. Напомню, что в цикле статей уже рассматривались добавление нового элемента в начало списка и добавление нового элемента в конец списка.
Принцип работы таков, что мы добавляем новый элемент в список после уже существующего элемента с заданным значением поля 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 )