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.

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

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


 

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

85235. ПУТИ СОВЕРШЕНСТВОВАНИЯ ИНВЕСТИЦИОННОЙ ДЕЯТЕЛЬНОСТИ НА ПРИМЕРЕ ЗАО «СТРОЙСЕРВИС» 374.5 KB
  Для успешного развития любой отрасли экономики необходимо своевременное воспроизводство капитала посредством инвестиций. Их количественный и качественный состав определяет характер и скорость восполнения экономических ресурсов, потребляемых в процессе производства благ.
85236. Совершенствование регулирования деятельности коммерческих банков Центробанком 724 KB
  Оптимизация стратегии реформирования российской экономики обеспечение стабильного развития и динамичных темпов экономического роста являются в настоящее время без преувеличения первостепенной задачей. Одной из важных задач российской экономической науки сегодня является исследование влияния государства...
85237. Утеплювач для зовнішніх огороджуючих конструкцій 457.06 KB
  Розрахунок тепловтрат зовнішніх огороджуючи конструкцій. Найбільш поширеними системами теплоізоляції є системи фасадної теплоізоляції опоряджені штукатурками та конструкції зовнішніх стін із фасадною теплоізоляцією з вентильованим повітряним прошарком.
85239. АНАЛИЗ ОРГАНИЗАЦИИ И ОЦЕНКА ЭФФЕКТИВНОСТИ ВНЕДРЕНИЯ CRM-СИСТЕМЫ 2.56 MB
  Целью данной работы является оценка эффективности внедрения CRM-системы «Петрол плюс». Для достижения поставленной цели выполняются следующие задачи: Описание особенностей, видов и этапов внедрения CRM-систем; Обоснование показателей эффективности внедрения CRM-систем...
85240. Активное управление портфелем ценных бумаг в условиях неопределенности и риска 1.81 MB
  На современном этапе реформирования экономики Украины, актуальной проблемой является обеспечение полноценного функционирования фондового рынка, как эффективного механизма перераспределения финансовых ресурсов между субъектами экономической деятельности.
85241. Пути повышения эффективности управления оборотными активами ОАО «Дзержинский мясокомбинат» 550.5 KB
  Теоретические основы управления оборотными активами Общие основы управления оборотными активами Особенности управления оборотными активами Анализ технико-экономических и финансовых показателей ОАО Дзержинский мясокомбинат Пути повышения эффективности управления оборотными активами ОАО Дзержинский мясокомбинат Анализ состава и структуры оборотных активов ОАО Дзержинский мясокомбинат Оптимизация размера основных видов оборотных активов Пути рационального использования оборотных средств ОАО Дзержинский...
85243. Совершенствование организации процесса приготовления и приготовление сложных горячих фирменных блюд из мяса (говядины, телятины, свинины) в ресторанной кухне с использованием современных технологий и оборудования 153.5 KB
  Актуальность моей работы заключается в том, что она имеет практическую значимость для предприятий общественного питания. Результаты проделанной работы могут быть использованы для разработки рецептур мясных блюд европейской кухни и определения технологических нормативов закладки сырья, что необходимо...