Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
23.03.2015
Размер:
1.05 Mб
Скачать

Линейные структуры данных.

1)Интуитивное понятие о реализуемой структуре данных.

2)Функциональное описание структуры данных.

(Спецификация): РОР (PUSH(S,X)) =S-аксиома.

3)Логическое описание.

Описываем в определенных ранее понятиях.

Новое понятие определяем через набор операций:

а) логическое описание структуры;

б) логическое описание операций над этой структурой;

(логическое описание на абстрактном уровне).

4)Физическое представление.

(Реализация операций над представителем).

Объединение, соединение, разделение вариантов.

Операции над линейной структурой данных

1)Создать(CREATE,INIT,…)

CREATE– для динамических структур;

INIT- для статических структур;

2)получить доступ к k-му элементу структуры с целью исследования или изменения этого элемента (селектор);

3)включить новый элемент непосредственно перед заданным (после);

4)исключить заданный элемент

Если 3) и 4) существуют, то структуру данных будем называть динамической;

5)объединить две структуры данных в одну (конкатенация строк)

6)разбить структуру на две;

7) сделать копию структуры данных;

8)определить количество элементов в структуре (операции наблюдателя);

9)сортировать элементы структуры данных в некотором порядке;

10)искать;

11)уничтожить структуру данных (деструктор);

(done,Dtstroy).

Виды линейных структур данных.

Стек (диверсивная память).

Очередь типа LIFO–lost-in-first-out.

Очередь – такая линейная структура, где доступ, добавление – с одного конца,а выборка с другого.

выборка

хвост (tail)

000000 голова(head)

добавление

Очередь – кольцевой буфер, циклическая память или очередь типа (FIFO).

Дек– двухвходовая очередь(Double-Ended-Quene).

.

000000

Разновидности дека:

дек с ограниченным входом – архив;

дек с ограниченным выходом – перечень или реестр.

Приоритетная очередь – выборка производится с одного конца (головы), а включение в любое место – в зависимости от приоритета.

Дек:

Реализация стека.

СТЕК

1).Интуитивное понятие.

Операции:

  • пополнение стека; (PUSH)

  • просмотр верхнего элемента; (TOP)

  • уничтожение верхнего элемента; (POP)

  • проверка стека на пустоту; (ISEMPTY)

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;

isemptySесть пустой_ стек_T

4.Физическое представление

Способы реализации объекта стек_T:

  1. ограниченная реализация на база вектора

А

дескриптор

rep REPresantation - представление

тело

В

Дескриптор содержит общую информацию обовсей структуре. Дескриптор указывает, где находится тело.

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

body const topint

rep

  1. 23 ……………..maxsize

дно

вершина дно const

C

2)неограниченный стек на базе списка

стек вершина

В ддддддддддд юll.юбю

тело вершина -представление

А

стека на базе списка

тело вершина

пустое тело

1 1 1 0

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

свободная

часть

Частный случай.

Д

стек А

стекВ

ва стека в сумме не превосходящие определенный размер

A: .

.

2

B: 1

Тип стек_Т=…

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

INIT(A);INIT(B);

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

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

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

varA,B:стек_Т

С

Аcreate(A,k1); - такие стеки тяжело

Вcreate(B,k2); разделять через

k1 разные

куча ссылки

k2

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

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

A1A

A2k1

B

k2

Замечание по поводу обработки ошибок.

1) Обнаружить ошибку и, непрерывая выполнение программы, известить пользователя с помощью сообщения об ошибке (напр.протокол ошибок).

2)Завести специальный параметр “Код завершения”.несовре-

При возникновении ошибки формировать специальное менное

значение кода завершения и обрабатывать его. решение

3)Использование исключительных ситуаций–современный способ

Типы ошибок при работе со стеком.

1-Overflow-переполнение стека.

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

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

Логическая ошибка программиста.

Соседние файлы в папке POSIBNIK