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.

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

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


 

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

83332. Возрастные особенности системы пищеварения 22.74 KB
  Если у новорожденного она составляет 30–-35 мл то к концу первого года жизни увеличивается в 10 раз. Пищеварительная система новорожденного существенно отличается от таковой у взрослых. У новорожденного полость рта развита очень слабо.
83333. Философия и мировоззрение 138.5 KB
  Позднее философом признавали такого человека который направляет свои интеллектуальные усилия на поиск всеобщей истины в вопросах окружающего бытия и человеческого жизнеустройства. Древние мудрецы размышляли и вели нескончаемые споры по самым разнообразным вопросам: о том как устроен космос каково место...
83334. Истории Эпидемиологии 34 KB
  Промышленная революция и развитие капитализма дали толчок в развитии многих наук в том числе и эпидемиологии потому что начало этой новой общественно-экономической формации сопровождалось эпидемиями кишечных инфекций паразитарных тифов и туберкулеза в городских трущобах и появлением в европейских...
83335. Economy of the Vladimir region 13.77 KB
  The Vladimir region — one of the most urbanized, economically developed and infrastructure equipped regions of Russia. Despite the lack of a resource source of raw materials, the Vladimir region is allocated with a highly skilled manpower.
83336. Понятие организации и её роли в менеджменте 4.74 KB
  Таким образом понятие организации звучит так: это некая группа людей от двух человек и более работающая совместно ради достижения каких-либо общих целей. Организация и менеджмент В системе менеджмента организация понятие сложное. Понятие организации обязательно включает в себя элемент управления.
83337. Фонетико-фонематическое недоразвитие речи 17.03 KB
  Фонематический слух являясь частью физиологического слуха направлен на соотнесение и сопоставление слышимых звуков с их эталонами которые хранятся в памяти человека упорядочение в решетке фонем. Каждый человек имеет индивидуальные особенности произношения звуков: один говорит тихо другой громко...
83338. Макросередовище маркетингу 25.99 KB
  Виділяють принаймні шість факторів які в певний спосіб позитивно або негативно можуть впливати на управління системою маркетингу: демографічні економічні природні науково-технічні політичні фактори та фактори культурного оточення.
83339. Порядок захисту права на комерційну таємницю 63.5 KB
  Комерційною таємницею можуть бути відомості технічного організаційного комерційного виробничого та іншого характеру за винятком тих які відповідно до закону не можуть бути внесені до комерційної таємниці. Важливим для забезпечення комерційної таємниці є забезпечення дії нормативно-правових актів...
83340. Secretary’s work 19.74 KB
  Professional receptionist (квалифицированный секретарь) is an irreplaceable assistant (помощник руководителя) to the head and face of the company. Secretary’s job is a good school of life and a great launching pad (стартовая площадка) to start a career.