Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Основные понятия алгоритмического языка

     p1               p1^

       Аналогично, процедура New(p2)  обеспечит выделение участка памяти,
    адрес которого будет записан в p2:

                    г=====¬          г=====¬
                    ¦  *--¦--------->¦     ¦
                    L=====-          L=====-
                      p2               p2^

       После выполнения операторов присваивания

            p1^:=2;   p2^:=4;

    в выделенные  участки  памяти  будут записаны значения 2 и 4 соответ-
    ственно:

                    г=====¬          г=====¬
                    ¦  *--¦--------->¦  2  ¦
                    L=====-          L=====-
                      p1               p1^

                    г=====¬          г=====¬
                    ¦  *--¦--------->¦  4  ¦
                    L=====-          L=====-
                      p2               p2^

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

           p1^:=p2^;

    в  участок памяти,  на который ссылается указатель p1, будет записано
    значение 4:


                    г=====¬          г=====¬
                    ¦  *--¦--------->¦  4  ¦
                    L=====-          L=====-
                      p1               p1^

                    г=====¬          г=====¬
                    ¦  *--¦--------->¦  4  ¦
                    L=====-          L=====-
                      p2               p2^

       После выполнения оператора присваивания

          p2:=p1;

    оба указателя будут содержать адрес первого участка памяти:

                    г=====¬          г=====¬
                    ¦  *--¦--------->¦  4  ¦
                    L=====-      --->L=====-
                      p1         ¦   p1^ p2^
                                 ¦
                    г=====¬      ¦
                    ¦  *--¦-------
                    L=====-
                      p2


       Переменные p1^, p2^ являются динамическими, так как память для них
    выделяется в процессе выполнения программы с помощью процедуры New.
       Динамические переменные  могут входить в состав выражений,  напри-
    мер:

          p1^:=p1^+8;    Write('p1^=',p1^:3);


        Пример. В результате выполнения программы:

     Program DemoPointer;
      var p1,p2,p3:^Integer;
      begin
       p1:=NIL;  p2:=NIL;  p3:=NIL;
       New(p1);  New(p2);  New(p3);
       p1^:=2;  p2^:=4;
       p3^:=p1^+Sqr(p2^);
       writeln('p1^=',p1^:3,'  p2^=',p2^:3,'  p3^=',p3^:3);
       p1:=p2;
       writeln('p1^=',p1^:3,'  p2^=',p2^:3)
      end.

    на экран дисплея будут выведены результаты:

    p1^=  2  p2^=  4  p3^= 18
    p1^=  4  p2^=  4



    37.   Д И Н А М И Ч Е С К И Е    С Т Р У К Т У Р Ы
    Д А Н Н Ы Х

       Структурированные типы данных,  такие, как массивы, множества, за-
    писи, представляют   собой статические структуры,  так как их размеры
    неизменны в течение всего времени выполнения программы.
       Часто требуется, чтобы структуры данных меняли свои размеры в ходе
    решения задачи.   Такие структуры данных называются динамическими,  к
    ним относятся стеки,  очереди, списки, деревья и другие. Описание ди-
    намических структур  с помощью массивов,  записей и файлов приводит к
    неэкономному использованию памяти ЭВМ и увеличивает время решения за-
    дач.
       Каждая компонента любой динамической структуры представляет  собой
    запись, содержащую   по крайней мере два поля:  одно поле типа указа-
    тель, а  второе - для размещения данных.  В общем случае запись может
    содержать не   один,  а несколько укзателей и несколько полей данных.
    Поле данных может быть переменной,  массивом, множеством или записью.
       Для дальнейшего рассмотрения представим отдельную компоненту в ви-
    де:
                                   г=====¬
                                   ¦  D  ¦
                                   ¦=====¦
                                   ¦  p  ¦
                                   L=====-
    где поле p - указатель;
        поле D - данные.
       Описание этой компоненты дадим следующим образом:

       type
        Pointer = ^Comp;
        Comp = record
                D:T;
                pNext:Pointer
             end;

    здесь T - тип данных.
       Рассмотрим основные правила  работы  с  динамическими  структурами
    данных типа стек, очередь и список, базируясь на приведенное описание
    компоненты.

    38.   С Т Е К И

       Стеком называется динамическая структура данных, добавление компо-
    ненты в которую и исключение компоненты из  которой  производится  из
    одного конца, называемого вершиной стека. Стек работает по принципу

          LIFO (Last-In, First-Out) -

    поступивший последним, обслуживается первым.
       Обычно над стеками выполняется три операции:
        -начальное формирование стека (запись первой компоненты);
        -добавление компоненты в стек;
        -выборка компоненты (удаление).
       Для формирования стека и работы с ним необходимо иметь  две  пере-
    менные типа указатель,  первая из которых определяет вершину стека, а
    вторая - вспомогательная. Пусть описание этих переменных имеет вид:

        var pTop, pAux: Pointer;

    где pTop - указатель вершины стека;
        pAux - вспомогательный указатель.
       Начальное формирование стека выполняется следующими операторами:

                         г=====¬       г=====¬
      New(pTop);         ¦  *--¦---¬   ¦     ¦
                         L=====-   ¦   ¦=====¦
                          pTop     L-->¦     ¦
                                       L=====-

                         г=====¬       г=====¬
      pTop^.pNext:=NIL;  ¦  *--¦---¬   ¦     ¦
                         L=====-   ¦   ¦=====¦
                          pTop     L-->¦ NIL ¦
                                       L=====-

                         г=====¬       г=====¬
      pTop^.D:=D1;       ¦  *--¦---¬   ¦ D1  ¦
                         L=====-   ¦   ¦=====¦
                          pTop     L-->¦ NIL ¦
                                       L=====-

        Последний оператор или группа операторов записывает  содержимое
    поля данных первой компоненты.
        Добавление компоненты в стек призводится с использованием вспо-
    могательного указателя:

                         г=====¬       г=====¬       г=====¬
      New(pAux);         ¦  *--¦---¬   ¦     ¦   ----¦--*  ¦
                         L=====-   ¦   ¦=====¦   ¦   L=====-
                          pTop     ¦   ¦     ¦<---    pAux
                                   ¦   L=====-
                                   ¦
                                   ¦   г=====¬
                                   ¦   ¦ D1  ¦
                                   ¦   ¦=====¦
                                   L-->¦ NIL ¦
                                       L=====-


                         г=====¬       г=====¬       г=====¬
      pAux^.pNext:=pTop; ¦  *--¦---¬   ¦     ¦   ----¦--*  ¦
                         L=====-   ¦   ¦=====¦<---   L=====-
                          pTop     ¦   ¦  *--¦-¬      pAux
                                   ¦   L=====- ¦
                                   ¦           ¦
                                   ¦   г=====¬ ¦
                                   ¦   ¦ D1  ¦ ¦
                                   ¦   ¦=====¦ ¦
                                   L-->¦ NIL ¦<-
                                       L=====-


                         г=====¬       г=====¬       г=====¬
      pTop:=pAux;        ¦  *--¦---¬   ¦     ¦   ----¦--*  ¦
                         L=====-   ¦   ¦=====¦<---   L=====-
                          pTop     L-->¦  *--¦-¬      pAux
                                       L=====- ¦
                                               ¦
                                       г=====¬ ¦
                                       ¦ D1  ¦ ¦
                                       ¦=====¦ ¦
                                       ¦ NIL ¦<-
                                       L=====-

                         г=====¬       г=====¬
      pTop^.D:=D2;       ¦  *--¦---¬   ¦ D2  ¦
                         L=====-   ¦   ¦=====¦
                          pTop     L-->¦  *--¦-¬
                                       L=====- ¦
                                               ¦
                                       г=====¬ ¦
                                       ¦ D1  ¦ ¦
                                       ¦=====¦ ¦
                                      
Пред.678910След.
скачать работу

Основные понятия алгоритмического языка

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ