Читаем Песни о Паскале полностью

      mLink : PNode; { указатель на смежный узел }

      mNext : PLink; { указатель на следующую запись в списке }

      end;

      TNode = record       { Тип запись для хранения страны (узла графа) }

      mName : Char; { Название страны (одна буква) }

      mLinks: PLink; { список связей с соседями (смежными узлами) }

      mNext : PNode; { указатель на следующую запись в списке }

      end;

var List : PNode; { список всех стран континента (узлов графа) }


      { Функция поиска страны (узла графа) по имени страны }

function GetPtr(aName : char): PNode;

var p : PNode;

begin

p:= List; { поиск начинается с головы списка }

{ проходим по элементам списка }

while Assigned(p) do begin

if p^.mName= aName

      then break       { нашли! }

      else p:= p^.mNext; { а иначе следующий }

end;

GetPtr:= p;

end;


{ Функция создает новую страну (узел), вставляет в глобальный список List

и возвращает указатель на новый узел }

function MakeNode(aName : Char): PNode;

var p : PNode;

begin

New(p);       { создаем переменную }

p^.mName:= aName; { копируем имя }

p^.mLinks:=nil; { список связей пока пуст }

p^.mNext:= List; { указатель на следующий берем из заголовка }

List:= p;       { заголовок указывает на новый узел }

MakeNode:= p;       { результат выполнения функции }

end;

      { Процедура установки связи узла p1 с узлом p2 }

procedure Link(p1, p2 : PNode);

var p : PLink;

begin

New(p);       { создаем переменную–связь }

p^.mLink:= p2;       { поле mLink должно указывать на p2 }

p^.mNext:= p1^.mLinks; { указатель на следующий берем из заголовка }

p1^.mLinks:= p;       { заголовок указывает на новый узел }

end;


      { Процедура чтения графа из текстового файла }

procedure ReadData(var F: Text);

var C : Char;

p, q : PNode;

begin

Reset(F);

while not Eof(F) do begin

if not Eoln(F) then begin { если строка не пуста }

      Read(F, C);       { читаем имя страны }

      C:=UpCase(C);       { перевод в верхний регистр }

      p:= GetPtr(C);       { а может эта страна уже существует? }

      if not Assigned(p)

      then p:= MakeNode(C); { если нет, – создаем }

      while not Eoln(F) do begin { чтение стран-соседей до конца строки }

      Read(F, C);

      C:= UpCase(C);

      if C in ['A'..'Z'] then begin { если это имя страны, а не пробел }

      q:= GetPtr(C);       { проверяем существование страны }

      if not Assigned(q)       { если не существует, – создаем }

      then q:= MakeNode(C);

      Link(p, q);       { связываем страну p с q }

      end

      end

end;

Readln(F); { переход на следующую строку файла }

end;

Close(F);

end;

      { Процедура распечатки графа }

procedure ExpoData(var F: Text);

var p : PNode;

q : PLink;

begin

Rewrite(F);

p:= List; { начало просмотра списка стран (узлов) }

while Assigned(p) do begin

Перейти на страницу:

Похожие книги

Сломанная кукла (СИ)
Сломанная кукла (СИ)

- Не отдавай меня им. Пожалуйста! - умоляю шепотом. Взгляд у него... Волчий! На лице шрам, щетина. Он пугает меня. Но лучше пусть будет он, чем вернуться туда, откуда я с таким трудом убежала! Она - девочка в бегах, нуждающаяся в помощи. Он - бывший спецназовец с посттравматическим. Сможет ли она довериться? Поможет ли он или вернет в руки тех, от кого она бежала? Остросюжетка Героиня в беде, девочка тонкая, но упёртая и со стержнем. Поломанная, но новая конструкция вполне функциональна. Герой - брутальный, суровый, слегка отмороженный. Оба с нелегким прошлым. А еще у нас будет маньяк, гендерная интрига для героя, марш-бросок, мужской коллектив, волкособ с дурным характером, балет, секс и жестокие сцены. Коммы временно закрыты из-за спойлеров:)

Лилиана Лаврова , Янка Рам

Современные любовные романы / Самиздат, сетевая литература / Романы