p>
{(pkey == pbeg) / / перевіряється, чи знаходиться видаляється елемент на початку списку
{= pbeg-> next;// Якщо так, то треба скоригувати покажчик pbeg на початок списку так, щоб він вказував на наступний елемент у списку, адреса якого знаходиться в полі next першого елемента> prev=0;// Обнуляється покажчик на попередній елемент
} if (pkey == pend) / / якщо видаляється елемент знаходиться в кінці списку, потрібно змістити покажчик pend кінця списку на попередній елемент, адреса якого можна отримати з поля prev останнього елемента
{= pend-> prev;> next=0;// Обнуляється покажчик на наступний елемент
} / / Якщо видалення відбувається з середини списку, то потрібно лише забезпечити двосторонній зв'язок попереднього і наступного елементів
{
(pkey-> prev) -> next=pkey-> next;
(pkey-> next) -> prev=pkey-> prev;
} pkey; true;
} false;
} * insert (Node * const pbeg, Node * & pend) / / Вставка елемента
{d, key; << «Введіть вставляється елемент:»; >> d; << «Введіть елемент, після якого буде вставлений новий:»; >> key; (Node * pkey=find (pbeg, key))
{* pv=new Node;> d=d;> next=pkey-> next;// Встановлення зв'язку нового вузла з наступним> prev=pkey;// Встановлення зв'язку нового вузла з попереднім> next=pv;// Встановлення зв'язку попереднього вузла з новим (pkey!=Pend) (pv-> next) -> prev=pv;// Встановлення зв'язку подальшого вузла з новимpend=pv;// Оновлення покажчика на кінець списку, якщо вузол вставляється в конецpv;
} cout << «Неможливо вставити після цього елементу!» << endl; 0;
} print (Node * pbeg) / / Друк списку
{(pbeg == NULL) cout << «Список порожній!» << endl;
{<< «Список:»; * pv=pbeg;// Pv пробігає за списком, починаючи з голови (pv!=NULL) / / поки не кінець списку, друкувати значення даних поточного вузла
{<< pv-> d << « »;=Pv-> next;// Перейти до наступного вузла
}
} << endl;
} menu () / / Текстове меню
{buf [10]; option;
{<< «=========== МЕНЮ ===========» << endl; << «1 - Додати елемент» << endl; << «2 - Вставити елемент» << endl; << «3 - Видалити елемент» << endl; << «4 - Вивести на екран» << endl; << «5 - Сортувати список» << endl; << «6 - Ввести три послідовності, отримати їх загальні символи» << endl; << «7 - Вихід» << endl; << «Натисніть 1-7 для вибору:»; >> buf;=atoi (buf);
} (! option); option; << « N» << endl;
} relize ()
{k,m,n;*pbeg_s=NULL,*pend_s=NULL;*pbeg_t=NULL,*pend_t=NULL;*pbeg_u=NULL,*pend_u=NULL;<< «Введіть кількість елементів першої послідовності:»; >> k; << «Введіть кількість елементів другому послідовності:»; >> m; << «Введіть кількість елементів третьої послідовності:»;
СIN >> n;
сout << «Введіть 1-ю послідовність:» << endl; (int i=0; i
{(pbeg_s, pend_s);
} << «Введіть 2-ю послідов...