Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа № 2. Ход работы



 

19.03.13                                                               Кондратенко Юрия, Шафранюка Игоря 6 ПО КТ

 

Лабораторная работа № 2

 

Тема. Работа со связными списками.

Цель: изучить одну из фундаментальных абстрактных структур данных - связный список, приобрести навыки создания и реализации алгоритмов создания, добавления, удаления и просмотра связного списка.

 

Ход работы

program car;

uses crt;

type

namestr = string[20];

Link = ^Node;

Node = record

            name: namestr;

            speed:integer;

            next: link;

              end;

var head, z: link;

namfind: namestr;

v: 0..4;

endmenu: boolean;

 

procedure list_initialize;

begin

new (head);

new (z);

head^.next:=z;

z^.next:=nil;

end;

 

procedure list_destroy;

begin

dispose (head);

dispose (z);

end;

 

procedure insert_after(name1: namestr; speed1: integer; t: link);

var x: link;

begin

new (x);

x^.name:= name1;

x^.speed:= speed1;

x^.next:= t^.next;

t^.next:= x;

end;

 

procedure delete_next(t: link);

var del: link;

begin

del :=t^.next;

t^.next :=t^.next^.next;

dispose(del);

end;

 

procedure InpAuto;

var nam: namestr;

sp: integer;

begin

write('Введите марку автомобиля: ');

readln(nam);

write('Максимальная скорость: ');

readln(sp);

insert_after(nam, sp, head);

end;

 

procedure Mylist;

var Curr: Link;

begin

Curr:=head^.next;

While Curr^.next <> nil do

begin

     writeln('Марка: ', Curr^.name, ' Скорость: ', Curr^.Speed);

     curr:=curr^.next;

   end;

Write('Вывод списка окончен. Нажмите Enter.');

readln;

end;

 

function findname(fn:namestr) :link;

var Curr:Link;

begin

Curr:=head;

while Curr<>Nil do

      if Curr^.name=fn

         then begin findname:=curr;

                    exit;

         end

      else curr:=curr^.next;

findName:=Nil;

end;

 

begin

list_initialize;

endmenu:=false;

repeat

      clrscr;

      textColor(green);

      writeln ('Укажите вид работы: ');

         writeln;

      textColor(white);

      writeln ('1. Запись первым в список');

      writeln ('2. Удаление 1-го элемента списка');

      writeln ('3. Просмотр всего списка');

      writeln ('4. Удаление элемента, следующего за указанным');

      writeln ('0. Завершение работы');

      readln (v);

      case v of

           1: inpauto;

           2: delete_next(head);

           3: mylist;

           4: begin

      writeln ('Введите марку автомобиля, за которым в списке следует удаляемый');

      readln(NamFind);

      delete_next(FindName(namfind));

      end;

      else endmenu:=true;

      end;

unit endmenu;

list_destroy;

end.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.