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.

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

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


 

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

45734. Ю. Хабермас. Моральное сознание и коммуникативное действие 38 KB
  Действия в этих мирах выражаются в языке. Теория коммуникативного действия: центром усилий Хабермаса различение противопоставление инструментального и коммуникативного действия. Воплощение инструментального действия сфера труда. При совершении инструментального действия реализуются определенные цели осуществляются предсказания касающиеся последствий данного действия.
45735. Хайдеггер. Бытие и время 47 KB
  Бытие и время. Бытиевмире вообще как основоустройство присутствия Гл. Бытиевмире как событие и бытие самости. Бытиев как таковое Гл.
45736. Диалектика просвещения. Философские фрагменты 23 KB
  В книге описывается саморазрушение просвещения и его возвращение к мифологии с которой оно боролось столетиями. Первый называется Понятие просвещения.
45737. Философические письма 42.5 KB
  Окидывая взглядом историю России Чаадаев обнаруживает в ней мрачное и тусклое существование где нет внутреннего развития. Чаадаев противник идеи множественности цивилизаций ибо неевропейские формы быта он рассматривает как нелепые отступления . Смысл же России Чаадаев видит в следующем: Мы жили и сейчас еще живем для того чтобы преподать какойто великий урок отдаленным потомкам Последующие письма Во втором письме Чаадаев подвергает критике православие за то что оно в отличие от западного христианства не способствовало освобождению...
45738. Шелер. Положение человека в космосе 37.5 KB
  Положение человека в космосе. Макс Шелер 18741928 Очерк Положение человека в космосе рассуждение о богоподобии человека. антроплогия имеет предметом определение человека его места. Сущность человека переход от животного к божественному.
45739. Теоретические источники идей Шопенгауэра 39.5 KB
  Эти теории объединяет присутствующая в античной мифологии идея о том что мир в котором мы живем не является единственной реальностью что существует другая реальность которая не постигается разумом и наукой но без учета влияния которой становится противоречивой наша собственная жизнь. Опираясь на учение Канта Шопенгауэр пишет: Кантовский идеализм показывает что весь материальный мир с его телами протяженными в пространстве и находящимися посредством времени в отношении причинности друг к другу и всем с этим связанным не есть нечто...
45740. Давид Юм «Трактат о человеческой природе» 35.5 KB
  Ассоциация по сходству похожесть ассоциация по смежности в пространстве и времени ассоциация по причинности Юм выступает против понятия абстрактной идеи требуя ее элиминации из философского рассмотрения поскольку идеи выступают слабыми копиями впечатлений а для абстрактных идей невозможно указать какоелибо из впечатлений которое было бы их источником. В центре гносеологической концепции Юма анализ идеи причинности. Идея причинности образуется из следующих эмпирических отношений между объектами: смежности в пространстве и времени...
45741. Никомахова этика 22 KB
  Никомахова этикаАристотель утверждает что предметом его этики является счастье которое он определяет как деятельность души в полноте добродетели. Аристотель делит все добродетели на нравственные или этические и мыслительные или разумные или дианоэтические. Каждая из этических добродетелей представляет собой середину между крайностями; Аристотель называет такие этические добродетели: кротость мужество умеренность щедрость величавость великодушие честолюбие ровность правдивость любезность дружелюбие справедливость...
45742. Аристотель. (Метафизика) 30.5 KB
  Форма оформляет материя оформляется. Форма есть действительность материя возможность. При этом материя как первоматерия едина форм же много: форма то что несет в себе суть вещи. Хотя сама материя вечна вещи дает она временность преходящесть ведь природа материи такова что она может быть и может не быть.