чик на знайдений елемент, тому буде мати тип значення Node. Вкачестве параметрів функції слід передати укзатель початку списку і шуканий елемент. Прототипомип функції пошуку:
* find (Node * const pbeg, char d)
Функція повинна пройти за списком, починаючи з голови, і перевірити збіг елемента, переданого як параметр, з кожним його елементом. Якщо виявиться збіг, необхідно повернути покажчик на знайдений елемент. Код:
* pv=pbeg; (pv)
{(pv-> d == d) break;=pv-> next;
} pv;
Видалення елемента.
У разі успішного видалення елкмента функція буде повертати значення «істина», у разі невдалого - «брехня», тому в якості типу значення, що повертається встановимо bool. Bool - логічний тип даних. Змінні цього типу можуть приймати тільки значення true або false. [6] У тілі функції організуємо введення елемента, який буде видалений, пошук цього елемента за списком і відповідну кооректіровку покажчиків, залежно від того, з якої частини списку буде видалений елемент. Якщо видалення відбувається з початку списку, слід вказівником голови привласнити адресу наступного елемента; якщо з середини - покажчики next майбутнього елемента і prev наступного змінити так, щоб ці елементи вказували один на одного; якщо з кінця списку - змістити покажчик хвоста на попередній елемент.
key; << «Введіть елемент, який потрібно видалити:»; >> key; (Node * pkey=find (pbeg, key))
{(pkey == pbeg) / / Видалення з початку
{= pbeg-> next;> prev=0;
} if (pkey == pend) / / Видалення з кінця
{= pend-> prev;> next=0
} / / Видалення з середини
{
(pkey-> prev) -> next=pkey-> next;
(pkey-> next) -> prev=pkey-> prev;
} pkey; true;
} false;
Вставка елемента.
У тілі функції ставки потрібно організувати введення двох елементів - того, який необхідно вставити, і того, після якого необхідно вставити. Потім доцільно провести пошук елемента, після якого буде проведена вставка, і якщо такого елемента немає - вивести відповідне значення. Якщо вставка можлива, необхідно покажчики next майбутнього і prev наступного елементів скорегувати так, щоб вони вказували на вставляється елемент. Якщо елемент вставляється в кінець списку, необхідно оновити покажчик хвоста.
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 ;/ / оновлення покажчика на кінець списку
} cout << «Неможливо вставити після цього елементу!» << endl;
Виведення на екран.
Реалізація даної функції досить проста. Якщо покажчик початку списку не порожній, необхідно з...