Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теоретичні відомості. Тема: Робота з елементами стеку.






Тема: Робота з елементами стеку.

Мета: Oзнайомитися з алгоритмами роботи з елементами стеку.

Теоретичні відомості.

Cтеком називається структура даних, що організована за принципом «останній прийшов – першим пішов».

Оскільки організація одновимірного масиву аналогічна лінійній структурі пам’яті комп’ютера, то логічним буде представлення стека саме у вигляді одновимірного масиву (див. малюнок)

а1 a2 a3 аn

 

А от організація обробки елементів цього масиву буде такою, що відповідає означенню структури даних. Для простішого розуміння поняття «стек» проведемо аналогію з стопкою книг.

Додаючи нову книжку в стопку, ми кладемо її зверху, тобто операція запису нового елемента відбувається в кінець масиву додаванням нового елемента. А для того щоб узяти книжки із середини стосу, нам треба всі верхні книжки по одній зняти у зворотному порядку щодо їх складання. Таким чином, операція читання зі стека відбувається також з кінця масиву, але в зворотному порядку.

Обробляючи елементи масиву, ми вводимо поняття поточного порядкового номеру елемента масиву і. В даному випадку нас цікавитиме лише останній елемент: ми його або зчитуємо(↑), або після цього записуємо новий елемент (↓).

Індекс останнього елемента стека називається вершиною. Це означає, що для обробки елементів стека на достатньо знати значення лише однієї величини і вершини стека.

Розглянемо реалізацію алгоритмів роботи з елементами стека мовою Pascal.

Перш за все треба оговорити критичні ситуації, які можуть виникнути при читанні та записі інформації. А саме: при читанні може виникнути ситуація, коли вже читати нема чого, тобто стек порожній, а при записі – стек переповнений, тобто досягнуто останнього елемента масиву, оскільки описуючи масив у програмі, ми повинні вказати межі зміни його індексу.

Процедура читання зі стека:

procedure read_from_stack;

begin

if i=0 then writeln('Stack is empty')

else

begin

writeln(a[i]);

dec(i);

end;

end;

Логічним є твердження, що на початку роботи програми з обробки елементів стека вершина стека повинна мати значення 0, оскільки в початковому стані дозволена лише операція запису в стек.

Процедура запису в стек може виглядати так:

procedure write_to_stack;

begin

if i> =n then writeln('Stack is full')

else begin

inc(i);

readln(a[i]);

end; end;

При виконанні програми, що реалізує роботу зі стеком, нам цікаво спостерігати за вмістом стека під час виконання операцій читання та запису. Для цього можна скористатися процедурою виведення поточного вмісту стека:

 

procedure print_stack;

var k: word;

begin

for k: =1 to i do

write(a[k], ' ');

writeln

end;

 

Корисною також є інформація про вміст усього масиву, відведеного для організації стека, під час обробки елементів стека. Саме при виконанні цієї процедури можна спостерігати за появою «сміття» в масиві та заміною його на нові значення при виконанні операції запису в стек.

procedure print_mas;

var j: word;

begin

for j: =1 to n do

write(a[j], ' ');

writeln

end;

 

 

Структура даних «стек» є структурою послідовного доступу.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал