Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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.

 


 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных