Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
All.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
167.23 Кб
Скачать

91.Навігація по зв’язному списку

Навігація по зв’язному списку здійснюється за допомогою вказівників. Зазвичай їх називають next, prev. В однозвязному списку використовується лише вказівник next, що дозволяє переходити на наступний елемент зв’язного списку. В двозвязному списку використовується вказівник next, prev, що дозволяє переходити по зв’язному списку і на наступний елемент і на попередній.

92Реалізація деструктору зв’язного списку

.LstFilms::~LstFilms(){

SFilm * flm=head, *prevflm;

While (flm!=NULL){

Prevflm=flm;

Flm=flm->next;

Delete prevflm;}

93. Стек. СТЕК в інформатиці та програмуванні -- різновид лінійного списку, структура даних, яка працює за принципом (дисципліною) "останнім прийшов -- першим пішов" (LIFO, last in, first out). Всі операції (наприклад, видалення елементу) в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім.

Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку -- "магазин", за аналогією з принципом роботи магазину в автоматичній зброї)

Операції зі стеком

push ("заштовхнути елемент"): елемент додається в стек та розміщується в його верхівці. Розмір стеку збільшується на одиницю. При перевищенні розміру стека граничної величини, відбувається переповнення стека (stack overflow)

pop ("виштовхнути елемент"): отримує елемент з верхівки стеку. При цьому він видаляється зі стеку і його місце в верхівці стеку займає наступний за ним відповідно до правила LIFO, а розмір стеку зменшується на одиницю. При намаганні "виштовхнути" елемент з вже пустого стеку, відбувається ситуація "незаповнення" стеку (stack underflow)

Кожна з цих операцій зі стеком виконується за фіксований час O(1) і не залежить від розміру стеку.

Додаткові операції (присутні не у всіх реалізаціях стеку):

isEmpty: перевірка наявності елементів в стеку; результат: істина (true), коли в стеку немає елементів.

isFull: перевірка заповненості стека. Результат: істина, коли додавання нового елементу неможливе

clear: звільнити стек (видалити усі елементи).

top: отримати верхній елемент (без виштовхування).

size: отримати розмір (кількість елементів) стека.

swap: поміняти два верхніх елементи місцями.

94. Реалізація стеку за допомогою зв’язного списку Стек у вигляді списку (pushdown list) – стек, організований таким чином, що останній елемент, що вводить в область пам'яті, розміщується на вершині списку.Стек є окремим видом зв’язного списку, у якому нові вузли можуть розміщуватися в стек і видалятися (виштовхуватися) з нього тільки на його вершині. З цієї причини стек є структурою даних типу «останнім увійшов – першим вийшов» («last-іn, fіrst-out» – LІFO). Елемент зв’язку в останньому вузлі стека встановлюється на нуль для того, щоб показати дно стека.

struct STACKNODE {

    int value;

    struct STACKNODE * next;

} stacknode_t;

95 - 96Операції Push і Pop для стеку

- При роботі зі стеком операції занесення і витягнення елемента є основними. Такі операції називають «запхати в стек» => Push, «витягнути зі стеку» => Pop.

-Для реалізації стеку потрібно дві функції – push() I pop()

-Також потрібно виділити область памяті, яка буде використовуватися в якості стеку.

int stack[MAX];

int tos=0; /* вершина стека */

/* запхати елемент в стек */

void push(int i){

if(tos >= MAX) {

printf("Стек повний\n");

return; }

stack[tos] = i;

tos++;}

/* Отримуємо верхній елемт стеку */

int pop(void){

tos--;

if(tos < 0) {

printf("Стек пустий\n");

return 0; }

return stack[tos];}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]