Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК№16.doc
Скачиваний:
9
Добавлен:
24.08.2019
Размер:
113.66 Кб
Скачать

5.1. Создание стека

1. Исходное состояние:

Beg :=nil;

2. Выделение памяти под 1-й элемент стека и занесение информации в первый элемент стека:

new(p);

p^.inf:=5;

p^.uk:=nil;

3. Установка вершины стека Веg на созданный элемент:

Веg:=p;

5.2. Добавление элемента в стек

1. Исходное состояние:

2. Выделение памяти под новый элемент:

new(p);

3. Занесение информации в новый элемент и установка связи между "старой" вершиной стека Веg и новым элементом:

p^.inf:=F;

p^.uk:=Beg;

  1. Перемещение вершины стека Веg на новый элемент:

Beg:=p;

5.3. Удаление элемента из стека

  1. Исходное состояние:

  1. Установка на удаляемый элемент вспомогательного элемента р:

p:= Beg;

3. Занесение информации из информационного поля вершины стека Веg в переменную Val:

Val:= Beg^.inf;

4. Перестановка указателя вершины стека Веg на следующий элемент:

Beg:=p^.uk;

5. Освобождение памяти, занимаемой "старой" вершиной стека Вeg, используя дополнительный указатель р:

dispose(p).

Пример.

Составить программу, которая формирует стек, добавляет в

него произвольное количество компонент, а затем читает все компоненты

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

В качестве данных взять строку символов.

Ввод данных – с клавиатуры дисплея, признак конца ввода – строка символов END.

program stek;

uses crt;

type

str= string[10];

uk_stack= ^stack;

stack= record

inf: str;

next: uk_stack

end;

var

Beg: uk_stack;

s: str;

procedure sozd_stack(var Beg: uk_stack; var s: str);

begin

new(Beg);

Beg^.next:=nil;

Beg^.inf:=s

end;

procedure dob_el_stack (var Beg: uk_stack; var s: str);

var p: uk_stack;

begin

new(p);

p^.next:=Beg;

Beg:=p;

Beg^.inf:=s

end;

procedure ud_el_stack(var Beg: uk_stack; var s: str);

begin

s:=Beg^.inf;

Beg:=Beg^.next

end;

begin

clrscr;

writeln('Vvedite slovo');

readln(s);

sozd_stack(Beg,s);

repeat

writeln('Vvedite slovo, konez - END');

readln(s);

dob_el_stack (Beg,s);

until s='END';

writeln('****** STACK ******');

repeat

ud_el_stack (Beg,s);

writeln(s);

until Beg = nil;

readln

end.

8

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