ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Пример программы обработки линейного списка
Program Spisok; {Программа для работы с линейным списком} Type Tinf=Char; {Тип информации} TP=^Tel; {Тип ссылка на элемент} Tel=Record {Тип элемента списка} inf:Tinf;{Поле информации} pSled:TP;{Поле ссылки на следующий элемент} End;
Procedure Init(Var head:TP); {Процедура инициализации списка} Begin head:=NIL; End;{Init}
Procedure InSpN(infEl:Tinf; Var head:TP); {Процедура включения элемента в начало списка} Var pn:TP; {Ссылка на новый элемент} Begin New(pn); {Резервирование памяти для нового элемента} pn^.inf:=infEl; {Заполнение поля информации} pn^.pSled:=head;{Заполнение поля ссылки} head:=pn; {Новая ссылка на головной элемент} End;{InSpN}
Procedure SozdSpN(Var head:TP); {Процедура создания списка из символов: обратное включение элементов} Var s:Char; Begin Init(head); {Инициализация пустого списка} WriteLn('Вводите символы! Признак конца ввода * '); Repeat Read(s); InSpN(s,head) {Включение элемента в начало списка} Until s='*'; ReadLn; End;{SozdSpN}
Procedure InitZ(infEl:Tinf; Var head:TP); {Процедура создания заглавного элемента списка} Begin New(head); {Резервирование памяти для нового элемента} head^.inf:=infEl; {Заполнение поля информации} head^.pSled:=NIL; {Заполнение поля ссылки} End;{InitZ}
Procedure InSpP(infEl:Tinf; Var pred:TP); {Процедура включения элемента после указанного} Var pn:TP; {Ссылка на новый элемент} Begin If pred<>NIL {Предыдущий элемент существует?} Then Begin New(pn); pn^.inf:=infEl; {Заполнение поля информации} pn^.pSled:=pred^.pSled; {Заполнение поля ссылки} pred^.pSled:=pn; {Обновление поля ссылки} pred:=pn; End; End;{InSpP}
Procedure SozdSpP(Var head:TP); {Процедура создания списка с заглавным элементом: прямое включение элементов} Var s:Char; pred:TP; Begin InitZ(' ',head); pred:=head; {Установка ссылки на головной элемент} WriteLn('Вводите символы! Признак конца ввода * '); Repeat Read(s); If s<>'*' Then InSpP(s,pred){Включение элемента в список} Until s='*'; ReadLn End;{SozdSpP}
Procedure ProsmSp(head:TP); {Процедура просмотра списка} Var pt:TP; {Cсылка на текущий элемент} Begin If head=NIL Then Begin WriteLn('Список пуст!'); Write(‘Нажмите Enter ->’); ReadLn; Exit; End; WriteLn('элементы списка:'); pt:=head; {Установка ссылки на головной элемент} While pt<>NIL Do Begin Write(pt^.inf); pt:=pt^.pSled;{Установка ссылки на следующий элемент} End; WriteLn; End; {ProsmSp}
Procedure OutSpN(Var head:TP); {Процедура исключения из списка начального элемента} Var pu:TP; {Ссылка на удаляемый элемент} Begin If head<>NIL Then Begin pu:=head; {Установка ссылки на головной элемент} head:=head^.pSled; Dispose(pu); End; End; {OutSpN}
{Основная программа} Var head:TP; Begin SozdSpN(head); {Прямое включение элементов} Write('После создания '); ProsmSp(head); OutSpN(head); {Исключение начального элемента} Write('После удаления '); ProsmSp(head); SozdSpP(head); {Обратное включение элементов} Write('После создания '); ProsmSp(head); ReadLn; End.
Не нашли, что искали? Воспользуйтесь поиском:
|