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.

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

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


 

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

9855. Экономическая перестройка М.С. Горбачева: трудные поворот к рынку 25.94 KB
  Экономическая перестройка М.С. Горбачева: трудные поворот к рынку. К концу 70-х гг. для части советского руководства стала очевидной невозможность сохранения без изменений существовавших в стране порядков. На экономической ситуации неблагоприятно ск...
9856. Эволюция промышленного производства в России 9-17 век 23.45 KB
  Эволюция промышленного производства в России 9-17 век. Ремесло первоначально зарождалось в патриархальных семьях как домашние промыслы для обслуживания себя и своих родственников. Эти изделия не выходили за рамки семьи и не поступали в продажу. В XI...
9857. Гражданская война в России: причины, этапы, характеристика противоборствующих сил 73 KB
  Местные государственные администрации – это звено исполнительной власти в областях, районах, городах Киеве и Севастополе. В границах своих полномочий они осуществляют исполнительную власть на территории соответствующей административно-территориальной единицы, а также реализуют полномочия, делегированные им соответствующими советами.
9858. Реформы политической системы в первой половине 19 века 38.19 KB
  Реформы политической системы в первой половине 19 века. Ограничение самодержавия являлось важнейшим условием перехода России к индустриальному обществу. Эта проблема была осознана верховной властью и передовой общественностью уже в начале ХГХ века. ...
9859. Мягкая модель сталинизма: власть и общество в 1964-1984гг. от стагнации к кризису 27.49 KB
  Мягкая модель сталинизма: власть и общество в 1964-1984гг. от стагнации к кризису. После смещения Н.С. Хрущева на октябрьском (1964) Пленуме ЦК КПСС Первым секретарем ЦК партии был избран Л.И. Брежнев. Новые веяния в политике начались сразу же после...
9860. Реформирование политической системы России во второй половине 19 века: земская, городская, судебная, военная реформы 60-70-х гг 38.44 KB
  Реформирование политической системы России во второй половине 19 века: земская, городская, судебная, военная реформы 60-70-х гг. Ограничение самодержавия являлось важнейшим условием перехода России к индустриальному обществу. Эта проблема была осозн...
9861. Становление рыночной экономики в постсоветской России (1992-2000 гг.) 27.92 KB
  Становление рыночной экономики в постсоветской России (1992-2000 гг.). Российская экономика требовала дальнейших преобразований. Были продолжены экономические мероприятия по переходу от командно-административных принципов к рыночной системе регулиро...
9862. Крестьянский вопрос в 19 веке: этапы его решения 28.91 KB
  Крестьянский вопрос в 19 веке: этапы его решения. Решение крестьянского вопроса являлось важнейшим условием перехода России к индустриальному обществу. Первым этот вопрос попытался решить император Павел I, издав указ о трехдневной барщине (1797). У...
9863. Становление новой российской государственности: тенденции политической жизни 1991-2000 гг 23.38 KB
  Становление новой российской государственности: тенденции политической жизни 1991-2000гг. После распада СССР начался новый период в истории России. Как суверенное государство она была образована на основании Декларации о государственном суверенитет...