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

Векторне представлення стеку

Ініціалізація стеку

my_stack.top_stack := 0;

Додавання елементу (перевірка на переповнення стеку обовязкова)

my_stack.top_stack := my_stack.top_stack + 1;

my_stack.stack_body[my_stack.top_stack] := data;

Видалення елементу (перевірка на наявність даних у стеці обовязкова)

data := my_stack.stack_body[my_stack.top_stack];

my_stack.top_stack := my_stack.top_stack - 1;

Векторне представлення черги

Ініціалізація черги

my_queue.tail_queue := 0;

Додавання елементу (перевірка на переповнення черги обовязкова)

my_queue.tail_queue:= my_queue.tail_queue + 1;

my_queue.queue_body[my_queue.tail_queue] := data;

Видалення елементу (перевірка на наявність даних у черзі обовязкова)

data := my_queue.queue_body[1];

for i := 1 to my_queue.tail_queue do

my_queue.queue_body[i] := my_queue.queue_body[i+1];

my_queue.tail_queue := my_queue.tail_queue - 1;

Моделювання лінійного списку. 2

б) Звязане представлення

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

При виконанні завдання лабораторної роботи пропонується для зберігання та обробки значень списку (стека, черги) використовувати показчик іменованого типу, одне поле якого зберігатиме данні, інші поля, описані типом-показчиком на той самий іменований тип, відповідатимуть за зчеплення вузлів.

Зв’язане представлення лінійного списку

Pascal:

type

PList = ^List;

List = record

date : тип компонента;

next : PList;

end;

var

my_queue : PList;

C:

struct List { тип компонента date;

List *next;

}

List *my_queue;

Зв’язане представлення стеку. 1

Ініціалізація стеку

my_stack := nil;

Додавання елементу

{створення нового вузла}

new(new_el);

{запис у новий вузол даного}

new_el^.data := data;

{зчеплення нового вузла з верхівкою стека}

new_el^.next := my_stack;

{перевизначення верхівки стеку}

my_stack := new_el;

Зв’язане представлення стеку. 2

Видалення елементу (перевірка на наявність даних у стеці обовязкова)

{запам’ятовування верхівки стеку}

del_el := my_stack;

{отримання даного з верхівки стеку}

data := del_el^.data;

{перевизначення верхівки на передостанній вузол}

my_stack := my_stack^.next;

{видалення запамятованого вузла-верхівки з «купи»}

dispose (del_el);

Зв’язане представлення черги. 1

Ініціалізація черги

my_queue := nil;

queue_head := nil;

Додавання елементу

{створення нового вузла}

new(new_el);

{запис у новий вузол даного}

new_el^.data := data;

{встановлення зв’язку нового вузла у нуль}

new_el^.next := nil;

{якщо в черзі немає жодного елементу, то…}

if queue_head = nil then

begin

{встановлення нового елементу як голови}

queue_head = new_el;

{встановлення нового елементу також як хвоста}

my_queue = new_el;

end

{якщо в черзі є хоча б один елемент, то…}

else

begin

{зв’язування хвоста з новим елементом}

my_queue^.next = new_el;

{перевизначення хвоста на новий елемент}

my_queue = new_el;

end;

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