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.

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

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


 

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

39436. Создание качественных каналов и связи на направлении Гродно - Брест (через Слоним) 356.5 KB
  Основные параметры системы передачи Параметр Значение параметра Число организуемых каналов 480 Скорость передачи информации кбит с 34368 Тип линейного кода HDB3MI Расчетная частота кГц 17186 Номинальное затухание участка регенерации дБ 65 Номинальное значение тока...
39437. Разработка линии связи между ОП1 (Брест) и ОП2 (Гомель) через ПВ (Пинск) 387 KB
  Для этого на стойке в оконечном пункте размещены: оборудование линейного тракта на две системы; оборудование дистанционного питания НРП двух систем передачи; оборудование магистральной телемеханики; оборудование участковой телемеханики; комплект служебной связи КСС; панель ввода; панель обслуживания. 3 Необслуживаемый регенерационный пункт НРП Промежуточное оборудование линейного тракта размещается в грунтовых контейнерах полуподземного типа НРПГ2. Оборудование НРПГ2 обеспечивает...
39438. Реструктуризация управленческой структуры предприятия 198.1 KB
  Целью работы является анализ финансово-хозяйственной деятельности предприятия и выработка на этой основе рекомендаций по реструктуризации предприятия на материалах ООО «Торговый дом Холод» г. Заринск Алтайский край.
39439. Создание качественных каналов связи на заданном направлении 370.5 KB
  В состав аппаратуры входит следующее оборудование: вторичного временного группообразования ВВГ оконечное оборудование линейного тракта ОЛТ необслуживаемые регенерационные пункты НРП а также комплект контрольноизмерительных приборов КИП. Сформированный в оборудовании ВВГ цифровй сигнал в коде МЧПИ или ЧПИ поступает в ОЛТ которое осуществляет согласование выхода оборудования ВВГ с линейным трактом дистанционное питание НРП телеконтроль и сигнализацию о состоянии оборудования линейного тракта служебную связь между оконечным...
39441. Создание качественных каналов и связи на направлении МИНСК-ГРОДНО (через ЛИДУ) 326.5 KB
  Основные параметры системы передачи Параметр Значение параметра Число организуемых каналов 480 Скорость передачи информации кбит с 34368 Тип линейного кода HDB3 или MI Амплитуда импульсов в линии В 302 Расчетная частота кГц 17186 Номинальное затухание участка регенерации дБ 65 Номинальное значение тока ДП мА 200 Допустимые значения напряжения ДП В 401300650 относительно земли Максимальное расстояние ОРПОРП 200 км Максимальное число НРП между ОРП 66 Максимальное число НРП в полу секции ДП 33 Комплекс аппаратуры...
39442. Использование каналов цифровых систем для передачи дискретных сигналов 190.5 KB
  В состав аппаратуры ИКМ120у входят: аналогоцифровое оборудование формирования стандартных первичных цифровых потоков АЦО оборудование вторичного временного группообразования ВВГ оконечное оборудование линейного тракта ОЛТ необслуживаемые регенерационные пункты НРП. Оборудование ОЛТ обеспечивает согласование выхода оборудования ВВГ с линейным трактом дистанционное питание ДП НРП телеконтроль ТК и сигнализацию о состоянии линейного тракта СС между оконечными и промежуточными пунктами. Для размещения НРП необходимо определить...
39443. ПРОЕКТИРОВАНИЕ МЕЖДУГОРОДНЕЙ ЦИФРОВОЙ ЛИНИИ ПЕРЕДАЧИ 446 KB
  Размещение НРП вдоль кабельной линии передачи осуществляется в соответствии с номинальной длиной регенерационного участка РУ для проектируемой ЦСП. блоки регенераторов в НРП не содержат искусственных линий ИЛ. Необходимое число НРП определяется по формуле: N=n1; N1=10; N2=16. Из произведенных расчетов следует что между ОП1 и ПВ потребуется установить 10 НРП между ОП2 и ПВ 16.
39444. Создание качественных каналов на направлении Витебск – Глубокое – Браслав 308.5 KB
  В состав аппаратуры входят: оборудование вторичного временного преобразования ВВГ оконечное оборудование линейного тракта ОЛТ необслуживаемые регенерационные пункты НРП а также комплект контрольноизмерительных приборов КИП. Оконечное оборудование линейного тракта обеспечивает согласование выхода оборудования ВВГ с линейным трактом дистанционное питание НРП телеконтроль и сигнализацию о состоянии линейного тракта служебную связь между оконечными и промежуточными пунктами. Оборудование НРП аппаратуры ИКМ120У включает в себя блоки...