Основы программирования на C++, PASCAL

Навигация

ГЛАВА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ

ГЛАВА 2. ВВЕДЕНИЕ В ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ГЛАВА 3. ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ

ГЛАВА 4. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ++

ГЛАВА 5. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

ГЛАВА 6. ЗАДАЧИ ПО ПРОГРАММИРОВАНИЮ

ПРИЛОЖЕНИЯ

СПИСОК ЛИТЕРАТУРЫ

д., х4 — результат последнего измерения. Связанный список обладает тем замечательным свойством, что его можно дополнять по мере поступления новой информации. Добавление происходит путем присоединения нового элемента к концу списка. Значение Nil в последнем элементе заменяется ссылкой на новый элемент цепочки:


Связанный список не занимает лишней памяти. Память расходуется в том объеме, который требуется для поступившей информации.

В программе для представления элементов цепочки используется комбинированный тип (запись). Для нашего примера тип такого элемента может быть следующим:

Type Pe=^Elem;

Elem=Record

Т: Real;                 

P: Ре

End;

Здесь Ре — ссылочный тип на переменную типа Elem. Этим именем обозначен комбинированный тип, состоящий из двух полей: T — вещественная величина, хранящая температуру, P — указатель на динамическую величину типа Elem.

В таком описании нарушен один из основных принципов Паскаля, согласно которому на любой программный объект можно ссылаться только после его описания. В самом деле, тип Ре определяется через тип Elem, а тот, в свою очередь, определяется через тип Ре. Однако в Паскале допускается единственное исключение из этого правила, связанное со ссылочным типом. Приведенный фрагмент программы является правильным.

Пример 2. Рассмотрим программу формирования связанного списка в ходе ввода данных.

Type Pe=^TypElem;

TypElem=Record

Т: Real; P: Ре

End;

Var Elem,Beg: Pe;

X: Real; Ch: Char;

Begin (Определение адреса начала списка и его сохранение}

NEW(Elem); Beg:=Elem;

Elem^.P:=Elem;

{Диалоговый ввод значений с занесением их в список и организацией связи между элементами)

While Elem^.P<>Nil Do

Begin

Write('Вводите число:');

ReadLntElem^.T);

Write('Повторить ввод? (Y/N)');

ReadLn(Ch);

If (Ch='n') Or (Ch=-'N')

Then Elem^.P:=Nil

Else Begin

NEW(Elem^.P) ;

Elem:=Elem^.P

End

End;

WriteLn(«Ввод данных закончен»);

{Вывод полученной числовой последовательности}

WriteLn(«Контрольная распечатка»);

Elem:=Beg;

Repeat

WriteLn (N,':'/Elem^.T:8:3);

Elem:=Elem^.P

Until Elem=Nil

End.

Здесь ссылочная переменная Beg используется для сохранения адреса начала цепочки. Всякая обработка цепочки начинается с ее первого элемента. В программе показано, как происходит продвижение по цепочке при ее обработке (в данном примере — распечатке информационной части списка по порядку).