end.
ОБЩЕЕ ЗАМЕЧАНИЕ. В рассмотренных процедурах признаком конца очереди являлось число 0. Если очередь заполняется символами, то для этого нужно выбрать свой признак конца, например, ".". Для ввода символов, как и для ввода чисел, также можно использовать датчик случайных чисел. Но в этом случае он должен генерировать коды ASCII, которые затем с помощью функции преобразования типов CHR трансформировать в сами символы.
Можно элементы очереди вводить с клавиатуры с помощью операторов READLN и READ. При использовании READLN необходимо производить нажатие клавиши ENTER после набора каждого элемента (числа или символа). Оператор же READ позволяет ввести сразу все элементы, заканчивая их набор числом 0 или точкой как признаком конца, причем числа при этом надо отделять друг от друга пробелом. В этом случае для очистки буфера клавиатуры рекомендуется в конце ввода предусмотреть пустой оператор READLN.
Заметим, кстати, что все сказанное о формировании очереди распространяется и на другие типы линейных списков.
Стек - это структура данных, которая обеспечивает доступ к списку по принципу LIFO (от первых букв английской фразы "Last Input First Output"): последним вошел, первым вышел. Компонента извлекается из стека таким образом, что первой выбирается та, которая была помещена последней.
В стеке доступна только одна позиция - его вершина, где находится последний по времени занесения элемент. Стек, как и очередь, можно представить в виде динамической цепочки звеньев, где первое звено является вершиной стека. Таким образом, в цепочке, отображающей стек, заглавное звено становится излишним.
Значением указателя, представляющего стек как единый объект, является ссылка на ВЕРШИНУ стека. Последнее звено цепочки - стека содержит в поле ссылок значение NIL.
STACK
*
elN
…
el2
nil
Если стек пуст, то значением указателя является ссылка NIL.
Перед началом заполнения стека его необходимо сделать пустым, т.е. выполнить "обнуление" указателя стека: STACK:= NIL.
Над стеком, как и над очередью, допустимы следующие операции:
1) формирование;
2) занесение нового элемента;
3) удаление элемента;
4) доступ (только для просмотра) к N-му звену стека.
Заметим, кстати, что занесение и удаление происходят в стеке исключительно в его вершине.
ОПЕРАТОРЫ
ПОЯСНЕНИЕ
Var ST:SS;
EL:integer;
K:SS;
ST
Begin
New(ST);
ST:=nil;
New(K);
K
Randomize;
EL:=random(10);
K^.elem:=el;
el1
K^.next:=ST;
ST:=K;
K^.elem:=EL;
Eln
EL1
Eln+1
Eln-1
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39