Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и структуры данных(ЛР№7).docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
25.03 Кб
Скачать

Методичні рекомендації до виконання лабораторної роботи № 7

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

Мета: Отримання навиків в організації динамічних структур даних – черги та стеку.

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

Динамічна структура даних черга створюється на основі однонаправленого списку, в якому доступними до обробки є:

  1. перший елемент – тільки для видалення,

  2. останній елемент – тільки для додавання (введення).

Отже з чергою виконується робота по принципу: «перший зайшов – перший вийшов». Для роботи з чергою завжди необхідно мати дві змінні-посилання: first – для збереження адреси першого елементу черги (голова черги) та last – для збереження адреси останнього елементу черги (хвіст черги).

last

first

nil

Приклади основних операцій з чергою

  1. Створення черги:

. . .{Опис вузла черги дійсних чисел}

type

n=^uzel;

uzel=record

inf: real;

next: n;

end;

var

first: n; {Посилання на перший елемент черги}

last: n; {Посилання на останній елемент черги}

u: n: {Посилання на довільний вузол черги}

c: char;

{Введення першого елементу в чергу}

new(u); first:=u;

writeln(‘Введите первый елемент’); readln(u^.info)

u^.next:=nil; last:=first;

c:=’y’;

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

while c=’y’ do

begin

new(u); u^.next:=last;

writeln(‘Введите очередной елемент’); readln(u^.info);

last:=u;

writeln(‘Хотите продолжать?’); readln(c);

end;

  1. Видалення першого елементу з черги

u:=last;

{Переміщення по черзі до другого елементу – того, що посилається на перший}

while (u^.next<>first) do u:=u^,next;

{Видалення першого елементу}

first:=u; Dispose(u^.next); first^.next:=nil;

Динамічна структура даних стек створюється на основі однонаправленого списку, в якому доступними до обробки є тільки перший елемент – для додавання (введення) або для видалення.

Отже зі стеком виконується робота по принципу: «перший зайшов – останній вийшов». Для роботи зі стеком завжди необхідно мати одну змінну-посилання: first – для збереження адреси першого елементу стеку.

first

nil

Приклади основних операцій зі стеком

  1. Створення стеку:

. . .{Опис вузла стеку дійсних чисел}

type

n=^uzel;

uzel=record

inf: real;

next: n;

end;

var

first: n; {Посилання на перший елемент стеку}

u: n: {Посилання на останній вузол стеку}

c: char;

{Введення першого елементу в стек}

new(u); first:=u;

writeln(‘Введите первый елемент’); readln(u^.info)

u^.next:=nil;

c:=’y’;

{Формування стеку в циклі }

while c=’y’ do

begin

{Ведення нового елементу в стек}

new(u); u^.next:=first;

writeln(‘Введите очередной елемент’); readln(u^.info);

first:=u;

writeln(‘Хотите продолжать?’); readln(c);

end;