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.

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

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


 

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

20671. Философская антропология Л. Фейербаха 40.5 KB
  Согласно его рассуждениям следует отвергнуть гегелевский абсолютный идеализм так как он упразднил конкретного действительного человека. В основу критики идеалистического понимания проблемы отношения Бога и человека Фейербах ставит тезис о том что теология это антропология. Поэтому неприемлем так же и теизм по той причине что не Бог творит человека а человек создает идею Бога. Её истинность кроется в том что она является только формой запечатления отношения человека к собственной сущности.
20672. Философский пессимизм Артура Шопенгауэра 46 KB
  Основные работы: Мир как воля и представление 1818 г. Прежде всего Шопенгауэр считал неприемлемой и губительной для философии гегелевскую систему миропонимания и в работе Мир как воля и представление в основу своих размышлений он поставил положения учения Иммануила Канта. В произведении Мир как воля и представление Шопенгауэр отталкивается от кантовских рассуждений о вещах в себе и мире феноменов поэтому краеугольной идеей данного произведения становится утверждение мир есть мое представление. Говоря о мире как воле...
20673. Экзистенциональная философия С. Кьеркегора 47 KB
  Кьеркегора. Сёрен Кьеркегор 18131855 датский философ его творчество относят к первым этапам зарождения западного экзистенциализма. он закончил теологический факультет Копенгагенского университета Кьеркегор в первую очередь стремится в своей философии исследовать вопросы о Боге религии вере отношении личности и Бога единичного бытия человека к Всевышнему. В 40х годах 19го столетия Кьеркегор прослушал лекции Шеллинга от которого перенял неприязнь к философской системе Гегеля.
20674. Философские идеи Карла Маркса и Фридриха Энгельса 63 KB
  Карл Маркс 1818 1883 и Фридрих Энгельс 18201895 немецкие философы родоначальники диалектического и исторического материализма. Например Марксу принадлежат: Критика гегелевской философии права 1843. Капитал 1867 1885 1894 Энгельс редактировал второй и третий тома Капитала после смерти Маркса.
20675. Философия Фридриха Ницше 41.5 KB
  Фридрих Ницше 18441900г. Принято творчество Ницше подразделять на ряд этапов. На втором этапе Ницше старался разрабатывать уже собственные оригинальные идеи.
20676. Философские аспекты психоанализа Зигмунда Фрейда 51.5 KB
  Зигмунд Фрейд 18561939 учёный врач психиатр проживавший в Австрии. Фрейд признан отцомоснователем психоанализа течения в медицине признающего узость физиологического неврологического и просто инструментального подхода гипноз электрошок и пр. Неправомерно отождествлять фрейдизм и психоанализ как таковой который в современной науке представляет сложную дисциплину далеко выходящую за границы учения Фрейда и его последователей.
20677. Классический позитивизм и эмпириокритицизм в истории философии 100.5 KB
  Таким образом по мнению позитивистов право на истинность получает знание сообщаемое исключительно наукой а единственными методами познания выступают естественнонаучный инструментарий. Историю обществоведение по его мнению следует обогатить точными методами и экспериментами. По мере смены этих форм господства по мнению СенСимона происходит смена форм мировоззрения: для феодализма характерно религиозное для индустриализма научное воззрение на мир. По его мнению научная социология или социальная физика должна стать единственным...
20678. Структурализм в философии 35.5 KB
  Так же известными представителями данного течения были ЛевиСтросс Альтюссер Фуко и Лакан выступившие против экзистенциализма идеалистического субъективизма персонализма историцизма и плоского эмпиризма. Клод ЛевиСтросс 1908 французский философ социолог этнолог считается основателем структурной школы в этнологии и современного философского структурализма. Структуралистская концепция ЛевиСтросса отразила широкий диапазон накопленных знаний в естественных и гуманитарных науках. Так например ЛевиСтросс особое значение придал...
20679. Философская герменевтика 43.5 KB
  Гадамер. Ганс Георг Гадамер немецкий философ родился в 1900 умер в 2002 году. Главным герменевтическим сочинением Гадамера признана работа Истина и метод I960. Хайдеггер Диалектика Гегеля 1971 Путь Хайдеггера 1983 четырехтомник Малых работ 19671977 Гадамер в своих ранних произведениях анализирующих античную философскую культуру стремится использовать герменевтический метод преподнося концепцию понимания как интерпретацию а концепцию познания как поиска согласия в диалоге.