У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА 25 ТЕМА- ДВУНАПРАВЛЕННЫЕ СВЯЗАННЫЕ СПИСКИ

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.6.2025

ЛАБОРАТОРНАЯ РАБОТА №25

    ТЕМА: ДВУНАПРАВЛЕННЫЕ СВЯЗАННЫЕ СПИСКИ.

   

Задание на лабоpатоpную pаботу

Проект (Project1) должен включать в себя два модуля Unit1 и Unit2.

Первый модуль (Unit1) обеспечивает интерфейс в виде оконной формы (приложение Form1).

Вид оконного интерфейса представлен на рисунке

Второй модуль (Unit2) – это набор методов (процедур) редактирования списка (приложение Unit.pas), интерфейсная секция такого модуля должна содержать не менее 5-ти процедур согласно вариантов заданий:

Варианты заданий.

3-4 Построить список.                                    1-2 Построить список.

      Вывести список на экран.                               Вывести список на экран.

      Уничтожить список.                                        Уничтожить список.

      "Склеить" два списка.                                     Добавить узел к "хвосту" списка.

       Добавить узел к "голове" списка.                  Удалить первый узел списка.

7-8 Построить список.                                     5-6 Построить список.

      Вывести список на экран.                                Вывести список на экран.

      Уничтожить список.                                         Уничтожить список.

      Удалить последний узел списка.                     Определить длину списка.                                               

      Добавить узел к "голове" списка.                    Удалить первый узел списка.

11-12 Построить список.                             9-10 Построить список.

        Вывести список на экран.                             Вывести список на экран.

        Уничтожить список.                                      Уничтожить список.

        Удалить последний узел списка.                 Добавить узел к "голове" списка.

        Добавить узел после указанного                 Удалить узел с указанным

        номера.                                                            номером.

15-16 Построить список.                           13-14 Построить список.

          Вывести список на экран.                           Вывести список на экран.

          Уничтожить список.                                    "Склеить" два списка.   

          Добавить узел к "хвосту" списка.               Удалить узел с указанным

          Отсортировать  список в порядке               номером.

           возрастания                                                  Определить узел с заданным

           значений какого-либо поля записи.           значением какого-либо поля записи.

19-20 Построить список.                       17-18 Построить список.

          Вывести список на экран.                       Вывести список на экран.

          Уничтожить список.                                Определить узел с заданным

          Удалить последний узел списка.            значением какого-либо поля записи.

          Удалить первый узел списка.                Добавить узел к "хвосту" списка.                                                 

                                                                            Удалить первый узел списка.

21-22 Построить список.                      25-26 Построить список.

          Вывести список на экран.                      Вывести список на экран.      

          Уничтожить список.                              Уничтожить список.           

          Удалить последний узел списка.         Добавить узел к "хвосту" списка.        

          Удалить первый узел списка.               Удалить первый узел списка.

23-24 Построить список.              Удалить последний узел списка                          

          Вывести список на экран.   Удалить первый узел списка.                     

          Уничтожить список.                                 

    Тип записи взять из файла “ВАРИАНТЫ ЗАПИСЕЙ”

в соответствии с номером по списку в журнале группы.

Структура списка должна иметь следующий вид (рис. 3),

либо согласно примеру в файле “Delphi_списки2_методика”:

          Под пустым списком следует понимать служебную структуру данных типа запись, содержащую поля указателей на начало и конец линейного списка, а также поле-счетчик узлов этого списка.  При этом поля указателей еще не содержат конкретный адрес узла начала и узла конца списка, а лишь проинициализированы безадресным значением nil. В свою очередь поле-счетчик содержит значение 0.

type  List=record

       head:PtrNode;  { указатель начала списка }

       tail:PtrNode;  { указатель конца списка }

    count:integer;

       end;

Графически это можно представить как показано на рис.3.1.

   

       ni l                                                                                                                                               nil

 

       Рис.3

Как следует из раздела 2, каждый узел двунаправленного линейного списка содержит один указатель на следующий узел и один на предыдущий. В последнем узле списка указатель на следующий узел содержит значение nil, и соответственно в первом узле списка указатель на предыдущий узел также содержит значение nil. Для реализации этих целей используем следующие структурные построения данных:

type PtrStud=^student;

    student=record      { информационная запись }

          name:string[20];          age:integer;    group:string[10]  

         end;

    PtrNode=^node;

    node=record

    info:student;

    prev:PtrNode;       {указатель на предыдущий

    next:PtrNode;                   и на последующие узлы списка }   

        end;

         List=record

       head:PtrNode;

 tail:PtrNode;

 count:integer;

       end;

Proc=procedure(x:ptrnode);

  Для построения списка следует выполнить итерационную процедуру связывания структурированных узлов, посредством инициализации их полей prev и next:

 var current:ptrnode;  {указатель на текущий узел}

   listfile:file of student;

   list0:list;

   procedure create_list;            

    begin

    reset(listfile);

{1}  new(current);   {выделена память под первый узел списка}

    read(listfile,current^.info); {чтение из файла информации

                                  по первому студенту в узел 1}

    list.count:=1;

{2}  current^.prev:=nil;{поле prev (указатель на предыдущий  

                     узел) первого узла принимает значение nil}

    list0.head:=current; {указатель начала списка поставлен на

                          текущий первый узел}

         while not eof(listfile) do

            begin

{3}    new(current^.next);{выделить память для следующего узла

по адресу, записанному в поле next  текущего узла}

      read(listfile,current^.next^.info);

{4}    current^.next^.prev:=current; {инициализируем поле prev

 второго узла, записывая в него адрес первого узла, на который

указывает указатель current(связывание второго узла с первым по полю prev)}

      inc(list0.count);

{5}   current:=current^.next;{сделать следующий(второй) узел текущим (перемещаем указатель current на следующий узел)}

          end;

          list0.tail:=current;{указатель конца списка ставим на

                               последний узел}

          current^.next:=nil;{поле next последнего узла списка

принимает значение nil}

          close(listfile);

          readkey;

           end;

На рис.3.2 графически интерпретированы действия операторов программы.

{1,2}                   {3}

       {4}

      {5}

             

                       Рис.3.2

Процедуру построения списка следует дополнить процедурой инициализации указателей начала и конца списка.

                            procedure init_list;

                            begin  

list0.head:=nil;      list0.tail:=nil;      list0.count:=0;

                            end;




1. Реферат- Учет затрат и калькулирование себестоимости продукции
2. Функции Центрального Банка РФ
3. Повышение конкурентоспособности сельскохозяйственной продукции
4. тематичних наук професор О
5. Сольові ванни 10 г морської або кухонної солі на відро води призначають пастозним дітям після 6міс
6. Остеохондроз шейного отдела позвоночника
7.  ОСНОВНЫЕ ЭКОНОМИЧЕСКИЕ ПОКАЗАТЕЛИ ПО ВИДАМ ЭКОНОМИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ Занятые в экономике лица которы
8. Статья- Эпигенетические изменения водовмещающих пород под действием техногенных факторов
9. вплив посади лідер що має більше посадових повноважень може значно легше вести за собою ніж той хто не во
10. Летние ливни в Бриндаване