37786

Двозв’язні списки

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

Информатика, кибернетика и программирование

Мета: навчитися програмувати з використанням вказівників та динамічних змінних, створювати та опрацьовувати двозвязні списки...

Украинкский

2013-09-25

315.92 KB

3 чел.

5

Міністерство освіти і науки України

Хмельницький національний університет

Кафедра системного програмування

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

з програмування

на тему:

«Двозвязні списки»

Виконав:

Студент групи КІ-10-1

Ноль М.Г.

Перевірив:

Мостовий С.В.

Хмельницький

2011

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

Тема: двозв'язні списки.

Мета: навчитися програмувати з використанням вказівників та динамічних змінних,  створювати та опрацьовувати двозв'язні списки.

Завдання

Дано «покажчик» на один з елементів непустого двозв'язного списку. Видалити зі списку даний елемент і вивести два «покажчика»: на елемент, що передує вилученому і на елемент, що іде за вилученим (один або обидва цих елементи можуть бути відсутніми; для відсутніх елементів виводити nil). Після видалення елемента зі списку звільнити пам'ять, займану цим елементом.

uses crt;

type vkaz=^spysok;

       spysok=record

              num:integer;

              next,

              last:vkaz

              end;

procedure add(var a,head,tail:vkaz; D:integer);

     begin

     if a=nil then

           begin

           new(a);

           a^.next:=nil;

           a^.last:=nil;

           head:=a;

           end

     else

           begin

           new(a^.next);

           a^.next^.last:=a;

           a:=a^.next;

           a^.next:=nil;

           end;

     a^.num:=D;

     tail:=a;

     end;

procedure create(var a,head,tail:vkaz; var n:integer);

  var i,D:integer;

      begin

      repeat

            write('vvedit kilkist chysel: ');

            readln(n)

      until n>0;

      for i:=1 to n do

            begin

            add(a,head,tail,random(50));

            write(a^.num,' ');

            end;

       writeln;

       end;

procedure Search(var a:vkaz; head:vkaz; var D:integer);

 var p:boolean;

       begin

       repeat

             write('vvedit element dlja vydalennja: ');

             readln(D);

             a:=head;

             while (a<>nil) and (d<>a^.num) do a:=a^.next;

             if a^.num=D then p:=true

        until p;

        end;

procedure DelEl(var a:vkaz; head:vkaz);

  var temp:vkaz; D:integer;

        begin

        search(a,head,D);

        if (a^.last=nil) and (a^.next=nil) then

               begin

               writeln('poperednij element=NIL');

               writeln('nastupnyj element=NIL');

               temp:=a;

               a:=nil;

               dispose(temp);

               end

        else

               begin

               if (a^.last=nil) or (a^.next=nil) then

                       begin

                       if a^.last=nil then

                                begin

                                writeln('poperednij element=NIL');

                                writeln('nastupnyj element: ',seg(a^.next^),ofs(a^.next^));

                                temp:=a;

                                a^.next^.last:=nil;

                                dispose(temp);

                                end;

                       if a^.next=nil then

                                begin

                                writeln('nastupnyj element=NIL');                                 

                                writeln('poperednij element: ',seg(a^.last^),ofs(a^.last^));

                                temp:=a;

                                a^.last^.next:=nil;

                                dispose(temp);

                                end;

                       end

               else

                       begin

                       writeln('poperednij element: ',seg(a^.last^),ofs(a^.last^));

                       writeln('nastupnyj element: ',seg(a^.next^),ofs(a^.next^));

                       temp:=a;

                       a^.last^.next:=a^.next;

                       a^.next^.last:=a^.last;

                       dispose(temp);

                       end;

               a:=head;

               while a<>nil do

                       begin

                       write(a^.num,' ');

                       a:=a^.next;

                       end;

                end;

        end;

procedure free(var a,tail:vkaz);

  var temp:vkaz;

        begin

        if a<>nil then

               begin

               a:=tail;

               while a<>nil do

                      begin

                      temp:=a;

                      a:=a^.last;

                      dispose(temp);

                      end;

                end

        else dispose(a);

        end;

  

    var el,head,tail:vkaz; n,d:integer;

begin clrscr; randomize;

create(el,head,tail,n);

DelEl(el,head);

free(el,tail);

repeat until keypressed;

end.

Результати виконаної програми:

Висновок.  Виконавши лабораторну роботу, я закріпив навички роботи з вказівниками, динамічними змінними та динамічними структурами даних; засвоїв алгоритми створення двозв’язного списку з різною кількістю елементів та додавання, пошуку і видалення елементів цього списку.


 

А также другие работы, которые могут Вас заинтересовать

7183. Философия абсолютной идеи Гегеля. Основные черты гегелевской диалектики 33 KB
  Философия абсолютной идеи Гегеля. Основные черты гегелевской диалектики. Высшей ступени своего развития диалектика в идеалистической форме достигла в философии Гегеля (177О-1831), который был великим представителем объективного идеализма.Гегелевская...
7184. Бихевиоризм и необихевиоризм 52.5 KB
  Толмен Э.Ч. Бихевиоризм и необихевиоризм/ Хрестоматия по истории психологии Общая позиция, принятая в этой работе, бихевиористская, но это особый вариант бихевиоризма, ибо имеются различные варианты бихевиоризма. Уотсон, архибихевиорист, предлагает...
7185. Статистичний аналіз фінансового стану підприємства 63 KB
  Тема:Статистичний аналіз фінансового стану підприємства. Фінансовий аналіз: сутність, мета та основні методи. Аналіз прибутку та прибутковості. Основні фінансові коефіцієнти. 2. Позитивний фінансовий результат діяльності під...
7186. Планування погашення довгострокової заборгованості 62 KB
  Тема: Планування погашення довгострокової заборгованості. Сутність статистичного аналізу довгострокової заборгованості. Погашення позички одноразовими платежами. Основні методи погашення основного боргу. Заборгованість...
7187. Генерирование случайных чисел с различными законами распределения на основе случайных чисел с равномерным распределением 207.53 KB
  Генерирование случайных чисел с различными законами распределения на основе случайных чисел с равномерным распределением название лабораторной работы Этапы задания и результаты их реализации. 1. Сгенерировать последовательность случайных чисел, подч...
7188. ОПРЕДЕЛЕНИЕ МОМЕНТА ИНЕРЦИИ КОЛЕСА МЕТОДОМ КОЛЕБАНИЙ 151 KB
  ОПРЕДЕЛЕНИЕ МОМЕНТА ИНЕРЦИИ КОЛЕСА МЕТОДОМ КОЛЕБАНИЙ Цель работы: Определение характеристик колебательного движения колеса, момента инерции колеса и сравнение его с теоретическим расчётом. Оборудование: экспериментальная установка,...
7189. ОПРЕДЕЛЕНИЕ ВЯЗКОСТИ ВОЗДУХА, СРЕДНЕЙ ДЛИНЫ СВОБОДНОГО ПРОБЕГА МОЛЕКУЛ И ИХ ЭФФЕКТИВНОГО ДИАМЕТРА 226.5 KB
  ОПРЕДЕЛЕНИЕ ВЯЗКОСТИ ВОЗДУХА, СРЕДНЕЙ ДЛИНЫ СВОБОДНОГО ПРОБЕГА МОЛЕКУЛ И ИХ ЭФФЕКТИВНОГО ДИАМЕТРА Цель работы: Определение вязкости воздуха, средней длины свободного пробега молекул и их эффективного диаметра с использованием легко измеряемых ...
7190. Поняття та особливості валютного контролю 559 KB
  Поняття та особливості валютного контролю Відповідальність за порушення валютного законодавства 1. Важливим видом фінансового контролю є валютний контроль - контроль за дотриманням валютного законодавства при здійсненні валютних операцій за участю р...
7191. Вивчення модифікаційної мінливості довжини та ширини листкової пластинки берези білої (Betula alba) 231 KB
  Тема: Вивчення модифікаційної мінливості довжини та ширини листкової пластинки берези білої (Betula alba) Розділ І. Теоретична частина. Модифікаційна мінливість. Модифікаційна мінливість - це мінливість. Яка виникає внаслідок впливу факторів зо...