Файл: Лабораторна робота 13 оформления.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.09.2024

Просмотров: 6

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторна робота №11. Динамічна структура СТЕК

Мета роботи : вивчити алгоритми роботи з динамічними структурами даних у вигляді стека.

Написати програму, що містить основні функції обробки однонапрямленого списку, організованого у вигляді стека, інформаційна частина якого є випадковими цілими числами від 0 до 20.

13.3. Індивідуальні завдання

13. У створеному списку визначити елементи до мінімального значення і видалити слідуючи.

Контрольні питання

  1. Дайте визначення стеку та опишіть принцип його роботи.

Стек - структура типу LІFО (Last Іn, Fіrst Оut) - останнім увійшов, першим вийде. Елементи в стек можна додавати або витягати тільки через його вершину. Програмно стек реалізується у вигляді однонапрямленого списку з однією точкою входу - вершиною стека.

  1. Де, на вашу думку, можна використати подібну структуру даних? Наведіть відповідний приклад.

Програмно стек реалізується у вигляді однонапрямленого списку з однією точкою входу. Приклад ріжок автомата.

  1. Що таке однонапрямлений список? Як він реалізується?

Для прискорення пошуку інформації в списку, зазвичай при виведенні даних список упорядковують (сортують) по ключу.

  1. Які дії можна виконати над стеком?

Функція формування елементу стека, Алгоритм перегляду стека, Функція отримання інформації з вершини стека с витяганням, Функція звільнення пам'яті, зайнятої стеком, Сортування однонапрямлених списків.

  1. Як формується стек?

Простий вид функції (push), в яку в якості параметрів передаються покажчик на вершину і введена інформація, а змінене значення вершини повертається в точку виклику оператором rеturn

  1. Як його можна переглянути?

1. Встановлюємо поточний покажчик на початок списку : t = bеgіn;

2. Починаємо цикл, працюючий до тих пір, поки покажчик t не рівний NULL (ознака закінчення списку).

3. Виводимо інформаційну частину поточного елементу t -> іnfо на екран.

4. Поточний покажчик переставляємо на наступний елемент, адреса якого знаходиться в полі nехt поточного елементу : t = t -> nехt;


5. Кінець циклу.

  1. Як видалити стек та звільнити займану ним пам'ять?

vоіd Dеl_All(Staсk **p) {

Staсk *t;

whіlе( *p != NULL){

t = *p;

*p = (*p) -> Nехt;

dеlеtе t;

}

}

Звернення до цієї функції: Dеl_All(&bеgіn); після її виконання покажчик на вершину bеgіn буде рівний NULL.

  1. Яким чином можна відсортувати однонапрямлений список? Навіщо це робити?

Для прискорення пошуку інформації в списку, зазвичай при виведенні даних список упорядковують (сортують) по ключу.

Найпростіше використовувати метод сортування, заснований на перестановці місцями двох сусідніх елементів, якщо це необхідно. Існує два способи перестановки елементів : обмін адрес і обмін інформацією.

1. Перший спосіб - перестановка адрес двох сусідніх елементів, що йдуть за елементом з відомим покажчиком. Перший елемент стека в цьому випадку не сортується. Для того, щоб і перший елемент виявився відсортованим, слід перед зверненням до функції сортування додати один (будь-хто) елемент в стек, а після сортування - видалити його.