асовий вузол буде містіті адресою передостаннього елемента. p align="justify"> После циклу ми пересуваємо вказівнік tail тому. А потім відаляємо Останній вузол. Зверніть уваг, что робиться це за помощью поля next передостаннього Вузли. Тепер, коли Останній елемент видалений, поле next передостаннього Вузли вказує у В«порожнечуВ», тому ми прісвоюємо цьом полю значення 0. p align="justify"> Щоб ще больше розшіріті функціональність Списків для ітераторів звітність, создать свой клас.
Клас ітераторів для однозв'язного списком.
После того, як ми написали класи Вузли и безпосередно списку, нужно Додати кла ітераторів. Ітераторі Використовують для пересування за списком. Концепція ітераторів широко Поширена и вікорістовується з багатьма структурами даніх. p align="justify"> SListIterator {: * node; * list;
};
У класі Дві змінні: вказівнік на поточний вузол списку и вказівнік на сам список. Покажчик на список вікорістовується, щоб візначіті, до Якого списку захи Данії ітератор. p align="justify"> Клас Iterator містіть конструктор з двома аргументами.
: SListIterator (SListNode * n, SLinkedList * l) {= n; = l;
}
У конструктор передаються вказівнікі на вузол и список. Заповнюють відповідні поля. p align="justify"> Колі ітератор добігає до кінця списку, что має відбуватіся? Ітератор НЕ может вернуться у Попередній елемент. Потрібно зніщуваті ітератор и створюваті новий? Замість цього ми створімо функцію у якій ітератор поверне у качан списком. p align="justify"> SListIterator: Start () {= list-> head;
}
Тут все просто, полю node ми прісвоюємо поле head змінної list. Тут и list, и node є членами класу Iterator. p align="justify"> Следующая функція пересуває ітератор у Наступний вузол.
SListIterator: Forward () {(node! = NULL) = node-> next;
}
зверніть уваг на перевірку умови. Ми можемо просунути ітератор вперед на один вузол далі Вузли tail списком. Цею вузол містіть значення 0. p align="justify"> Следующая функція повертає Значення потокового Вузли.
& SListIterator: Item () {node-> data;
}
Метод повертає значення за ПОСИЛАННЯ.
І остання функція ітератора перевіряє его значення. Если у ітератор містіться 0 (список закінчівся або у ньом немає елементів), то функція поверне 0. Если в ітераторі містіться коректний значення, то функція поверне 1. p align="justify"> SListIterator: Valid () {(node! = NULL);
}
хочай, за помощью ітераторів и можна додаваті Вузли до переліку (метод InsertAfter класу SListNode), робиться це НЕ Дуже добре. Если ітератор вказує на Последний вуз...