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.

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

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


 

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

69961. «Якоря карьеры» студентов заочного отделения Белорусского национального технического университета 68 KB
  В статье авторы раскрывают понятия «мотивация», «профессиональная мотивация», «карьера», их виды, структуру, рассматривают различные научные подходы в их изучении. Статья содержит подробное описание методики Э. Шейна «Якоря карьеры».
69962. МЕНТАЛЬНЫЕ ВОЗМОЖНОСТИ ДОШКОЛЬНИКОВ КАК УСЛОВИЕ ИХ СПОСОБНОСТИ К ПРАВДИВОМУ И НЕПРАВДИВОМУ ПОВЕДЕНИЮ 65.5 KB
  Так под поведением понимается такая протяженная во времени активность человека которая включает в себя инициативные обращенные или ответные воздействия человека на любые воздействия других людей. Именно поведение человека отражает его представления о себе окружающем его мире...
69963. ВЛИЯНИЕ ПРОФЕССИОНАЛЬНЫХ ДЕСТРУКЦИЙ НА СТАНОВЛЕНИЕ ПРОФЕССИОНАЛЬНОЙ ИДЕНТИЧНОСТИ ПРЕПОДАВАТЕЛЯ ВУЗА 115.5 KB
  В статье рассматривается проблема влияния профессиональных деструкций на развитие профессиональной идентичности преподавателя высшей школы. Понятие идентичности под которой подразумевается твердо усвоенный и личностно принимаемый образ себя во всем богатстве...
69964. ФОРМИРОВАНИЕ ЭФФЕКТИВНОЙ ПЕДАГОГИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ В ВУЗЕ ПОСРЕДСТВОМ ДИАЛОГИЧЕСКОГО ВЗАИМОДЕЙСТВИЯ 67 KB
  Однако несмотря на значительное количество исследований к настоящему времени еще не сложилась целостная концепция формирования межличностного диалогического взаимодействия в учебном процессе. Объясняется это не столько низким уровнем знаний информированности студентов...
69965. ВЕРБАЛЬНЫЙ ИНТЕЛЛЕКТ И ЧЕРТЫ ЛИЧНОСТИ СТУДЕНТА-ПСИХОЛОГА 43.13 KB
  В статье на основе парадигмы интеллекта как ментального опыта представлен анализ структуры вербального интеллекта и соотношения его факторов а также динамика функционирования вербального интеллекта в процессе формирования тематических и категориальных группировок.
69966. ЛИЧНОСТНЫЕ ОСОБЕННОСТИ СТУДЕНТОВ, СКЛОННЫХ К ИНТЕРНЕТ-ЗАВИСИМОМУ ПОВЕДЕНИЮ 208.5 KB
  В связи с этим в последнее десятилетие наряду с такими распространенными зависимостями как наркомания алкоголизм появился качественно новый феномен интернет-зависимость. В данной статье освещены теоретические взгляды на проблему компьютерной зависимости у студентов...
69967. Проблема осмысленности жизни и здоровья в раннем юношеском возрасте 209 KB
  Данная статья посвящена теоретическому анализу проблемы взаимосвязи осмысленности жизни и здоровья. Полетаева 2001 который в свою очередь определяет место здоровья в индивидуальной иерархии терминальных и инструментальных ценностей человека особенности мотивации в области здорового...
69968. КОГНИТИВНЫЕ МОДЕЛИ ЛИЧНОСТИ ЭТАЛОННОГО И РЕАЛЬНОГО УЧЕНИКА В ПЕДАГОГИЧЕСКОМ СОЗНАНИИ: ПСИХОСЕМАНТИЧЕСКИЙ АНАЛИЗ 90.5 KB
  На примере сравнительного анализа когнитивных моделей личности эталонного и реального учеников доказывается что содержание эталонатеории личности школьника существующей в профессиональном сознании педагога выступает как суррогат знаний препятствующий адекватному познанию учителем личности ребенка.
69969. Психолого – акмеологическая специфика коммуникации в системе «врач-больной» 156.5 KB
  Минск старший преподаватель кафедры юридической психологии Эффективность медицинской помощи во многом зависит от умения врача общаться с пациентом. Взаимоотношения медицинского работника и больного складываются индивидуально в зависимости от особенностей состояния и личности пациента...