Page 36 - 6110
P. 36

Не  менш  важливим  окремим  випадком  лінійного  списку  є
                            зв'язаний  список,  в  якому  кожний  елемент  окрім  поля  даних
                            зберігає  також  вказівник  на  наступний.  Така  структура  дозволяє
                            зняти  обмеження  на  зберігання  лінійного  списку  в  безперервній
                            області пам'яті.

                                9.2 Стек
                                Стек  в  інформатиці  та  програмуванні  –  це  різновид  лінійного
                            списку,  структура  даних,  яка  працює  за  принципом  “останнім
                            прийшов  -  першим  пішов”  (LIFO:  last  in,  first  out).  Всі  операції
                            (наприклад, видалення елементу) в стеку можна проводити тільки з
                            одним  елементом,  який  знаходиться  на  верхівці  стеку  та  був
                            введений в стек останнім.
                                Стек можна розглядати як певну аналогію до стопки тарілок, з
                            якої можна взяти верхню, і на яку можна покласти верхню тарілку
                            (інша  назва  стеку  –  “магазин”,  за  аналогією  з  принципом  роботи
                            магазину в автоматичній зброї).

                                9.2.1 Операції зі стеком
                                Push  (“заштовхнути  елемент”):  елемент  додається  в  стек  та
                            розміщується  в  його  верхівці.  Розмір  стеку  збільшуеться  на
                            одиницю.  При  перевищенні  розміра  стека  граничної  величини,
                            відбувається переповнення стека (stack overflow)
                                Pop  (“виштовхнути  елемент”):  отримує  елемент  з  верхівки
                            стеку.  При  цьому  він  видаляється  зі  стеку  і  його  місце  в  верхівці
                            стеку  займає  наступний  за  ним  елемент  (відповідно  до  правила
                            LIFO),  а  розмір  стеку  зменшується  на  одиницю.  При  намаганні
                            “виштовхнути” елемент з вже пустого стеку, відбувається ситуація
                            “незаповнення” стеку (stack underflow).
                                Кожна  з  вищевказаних  операцій  зі  стеком  виконується  за
                            фіксований час Т(1) і не залежить від розміру стеку.

                                9.2.2  Додаткові  операції  зі  стеком  (присутні  не  у  всіх
                            реалізаціях стеку)
                                ІsEmpty - це перевірка наявності елементів в стеку. Результат:
                            істина (true), коли в стеку немає елементів.
                                ІsFull - це перевірка заповненості стека. Результат: істина, коли
                            додавання нового елементу неможливе.
                                Сlear: звільнити стек (видалити усі елементи).
                                Тop: отримати верхній елемент (без виштовхування).
                                Size: отримати розмір (кількість елементів) стека.
                                Swap: поміняти два верхніх елементи місцями.


                                                            35
   31   32   33   34   35   36   37   38   39   40   41