Изучение языка программирования
Турбо Паскаль (Turbo Pascal)

На этом сайте можно: скачать среду программирвания Турбо Паскаль, изучить язык программирования Турбо Паскаль, а так же скачать программы на языке Турбо Паскаль!
Решенные задачи на языке Паскаль



Для тех кто хочет разобраться как работать со связанным списком!
TYPE
Link=^data;                          {указатель на тип данных              }
data=record                      {описание самого типа данных              }
      FIO:string[50];                {ФИО                                  }
      Tel:string[10];                {телефон                              }
      next:Link;                     {указатель (адрес) на следующую запись}
     end;

VAR
P,First:Link;                        {указатели на запись: текущую, первую }

BEGIN
 writeln('Число свободных блоков в динамически распределяемой области памяти:');
 writeln('До загрузки данных = ',memavail);

 P:=new(Link);                {=1=  выделить память и адрес записать в P}
 P^.FIO:='Шабаров П.С';       {=2=  выделенную память заполнить данными }
 P^.Tel:='93-2-46';
 P^.next:=nil;
 First:=P;

 P:=new(Link);                {=3=}
 P^.FIO:='Соловьев А.А.';     {=4=}
 P^.Tel:='3-12-41';
 P^.next:=First;
 First:=P;

 P:=new(Link);                {=5=}
 P^.FIO:='Липовский Р.Е.';    {=6=}
 P^.Tel:='3-32-17';
 P^.next:=First;
 First:=P;

 writeln('После загрузки данных = ',memavail);

 while P<>nil do
 begin
  First:=P^.next;              {сохранить адрес указывающий на следующую запись}
  dispose(P);                  {=7=  освободить память по текущему адресу      }
  P:=First;                    {сохраненный адрес записать в P                 }
 end;
 writeln('После удаления данных = ',memavail);
 readln;
END.
Вообщем, после переработки предыдущей задачи, оказалось что там много чего лишнего. Данная программа показывает: как создать простой свзанный список, что происходит с динамической памятью и как освободить память занимаемую списком.Для обхода всех записей списка делаем вот такой цикл:
 P:=First;                {начать с первой записи          }
 while P<>nil do          {выполняем пока не дошли до конца}
 begin
  ...                     {что-то делаем                   }
  ...

  P:=P^.next;             {переходим к следующей записи    }
 end;
Так, это еще не все. Обязательно скачайте файлик - там исходник программы и графическое пояснение что и как происходит при выполнении этой программы.
Внимательно прочитайте этот материал, затем разберитесь с помощью графического пояснения как работает программа, и вы поймете, как работать со связанным списком!
Скачать исходник