37786

Двозв’язні списки

Лабораторная работа

Информатика, кибернетика и программирование

Мета: навчитися програмувати з використанням вказівників та динамічних змінних, створювати та опрацьовувати двозвязні списки...

Украинкский

2013-09-25

315.92 KB

2 чел.

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.

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

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


 

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

78350. Растворы электролитов. Изотонический коэффициент. ТЭД 228.26 KB
  Этих толчков вместе с тепловыми колебаниями ионов в кристалле оказывается достаточно для отделения ионов от кристалла и перехода их в раствор. Вслед за первым слоем ионов в раствор переходит следующий слой и таким образом идет постепенное растворение кристалла. Перешедшие в раствор ионы остаются связанными с молекулами воды и образуют гидраты ионов. Иначе говоря в результате диссоциации образуются не свободные ноны а соединения ионов с молекулами растворителя.
78351. Окислительно-восстановительные процессы. Применение электролиза 162.67 KB
  В ионных соединениях эта неравномерность распределения электронов максимальна при образовании веществ с ионной связью валентные электроны практически полностью переходят от атома одного элемента к атому другого. Прн этом элемент электроны которого смещаются к атомам другого элемента полностью в случае ионной связи или частично в случае полярной проявляет положительную окисленность. Элемент к атомам которого смещаются электроны атома другого элемента проявляет отрицательную окисленность. Число электронов смещенных от одного атома...
78352. Металлы и сплавы. Химические свойства металлов и сплавов 238.97 KB
  Химические свойства металлов. Добывание металлов из руд. Правда магний и алюминий сохраняют свой блеск даже будучи превращенными в порошок но большинство металлов в мелкораздробленном виде имеет черный или темносерый цвет.
78353. Комплексные соединения 531.93 KB
  Ионы некоторых элементов способны присоединять к себе другие ионы или нейтральные молекулы (например, NH3), образуя более сложные комплексные ионы. При их связывании с ионами противоположного знака получаются различные комплексные соединения. Наиболее полно свойства и строение комплексных соединений объясняет координационная теория
78354. Химические свойства элементов 157.55 KB
  При нагревании они соединяются с водородом с образованием гидридов с галогенами серой азотом фосфором углеродом и кремнием с образованием соответственно галогенидов сульфидов нитридов фосфидов карбидов и силицидов: При нагревании щелочные металлы способны реагировать с другими металлами образуя интерметаллиды. Иногда для получения щелочных металлов проводят электролиз расплавов их гидроксидов...
78355. Органические соединения. Простые и кратные связи в органических соединениях. Предельные и непредельные углеводороды 70.48 KB
  Изомерия органических соединений. Классификация органических соединений. Берцелиусу определить органическую химию как химию соединений углерода 1806 г. Именно это свойство позволяет углероду образовывать миллионы соединений изучению которых посвящена целая область органическая химия.
78356. Макроэкономическое регулирование национальной экономики 33.31 KB
  Государственная социальная политика. Это совокупность мероприятий в сфере налогообложения направленных на формирование доходной части государственного бюджета повышение эффективности функционирования всей национальной экономики обеспечение экономического роста занятости населения и стабильности денежного обращения Фискальная политика это система регулирования экономики посредством изменений государственных расходов и налогов. Фискальная политика может как благотворно так и достаточно болезненно воздействовать на стабильность...
78357. Экономический рост национальной экономики 63.55 KB
  Факторы экономического роста.Основы методологии расчетов темпов экономического роста. Показатели параметры экономического роста. Как известно темпы экономического роста определяют важнейшие характеристики хозяйствования такие как: динамика объемов производства в системе в целом отдельных ее отраслях и регионах; прогрессивные отраслевые сдвиги; скорость и степень совершенствования структуры национальной экономики; изменение величины и структуры потребления и накопления в стране; динамика уровня жизни населения страны в целом и...
78358. Конкурентоспособность национальной экономики 51.67 KB
  Понятие конкурентоспособности экономической деятельности.Оценка конкурентоспособности национальной экономики. Предпосылки конкурентоспособности национальной экономики ее отраслей и отдельных экономических агентов. Понятие конкурентоспособности экономической деятельности Что же понимать под конкурентоспособностью любого экономического агента.