Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Практические занятия / Линейные структуры / Практическая работа №4.doc
Скачиваний:
34
Добавлен:
23.03.2015
Размер:
237.06 Кб
Скачать

2,3) Логічний опис.

Тип стек_Т = {непорожній_ стек_T | порожній_ стек_T} рекурсивне

визначення

непорожній_стек_T= (вершина:T; тіло: стек_T) стеку

АЛГ. NEW:стек_Т;

newпорожній_ стек_T

АЛГ.PUSH(S: стек_Т,t:T): стек_Т;

pushстек_Т(непорожній_ стек_T(t,s))

АЛГ.POP(S: стек_Т): стек_Т;

ЯКЩОSєнепорожнійстек_Т, ТОДІ

pop тело (S),

ІНАКШЕпомилка

АЛГ. SIZE(S:стек_Т): INT;

size ЯКЩО S є порожній_стек_T ТОДІ 0

ІНАКШЕ 1+size(тело(S))

АЛГ. IS_EMPTY (S:стек_T):bool;

IS_EMPTY S є порожній_стек_T

4.Фізічний опис

Способи реалізації об'єкту стек_T:

  1. обмежена реалізація на база вектора

Дескриптор містить загальну інформацію про всю структуру. Дескриптор указує, де знаходиться тіло.

Неявний зв'язок: тіло починається відразу за дескриптором.

2)необмежений стек на базі списку.

стек

в

3) крихенькийстек з 0та1 на базіслова

Окремий випадок.

Два стеки в сумі, що не перевершують певний розмір

Тип стек_Т=…

varA,B:стек_Т; (Статична реалізація)

INIT(A);INIT(B);

Для динамічного регулювання стека:

а) дескриптор і тіло виділяються статично;

б) дескриптор - статично, тіло - динамічно;

var A,B:стек_Т

Такі стеки тяжко розділяти через різні посилання

в) виділяти і тіла, і дескриптори динамічно

create(A,k1); create(B,k2);

Зауваження з приводу обробки помилок.

1) Виявити помилку і, неперириваючи виконання програми, сповістити користувача за допомогою повідомлення про помилку (наприклад, протокол помилок).

2) Завести спеціальний параметр “Код завершення”. При виникненні помилки формувати спеціальне значення кода завершення та обробляти його.

3) Використання виняткових ситуацій - сучасний спосіб.

Типи помилок при роботі із стеком.

1-Overflow-переповнення стека.

2-Underflow-опустошение стека (натрапили на дно).

Неправильний аналіз предметної області (ПО).

Логічна помилка програміста.

Соседние файлы в папке Линейные структуры