Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 11 стр.

UptoLike

- 11 -
Создать такой список можно следующими действиями: сделать список L
пустым, затем поочередно вставлять в него элементы в нужном порядке.
Сделать список пустым весьма простодостаточно обнулить поле last,
поскольку список пуст, если его длина равна нулю. Оформим это действие в
виде процедуры make_null(L):
procedure make_null(var L: list);
{ делает список L пустым }
begin
L.last:=0 { длина списка стала равна нулю }
end; {make_null}
Вставка нового элемента x перед i-м элементом списка осуществляется в
два этапа: во-первых, все значения из компонент массива elems с индексами i,
i+1, …, last перемещаются соответственно в компоненты с индексами i+1, i+2,
…, last+1; во-вторых, в i-ю компоненту помещается элемент x,и значение
поля last увеличивается на единицу.
Ниже показано, что происходит при вставке значения Thursday
перед третьим элементом списка < Monday, Wednesday, Friday,
Saturday>.
после 1-го этапа вставки:
после 2-го этапа вставки:
Операцию вставки оформим в виде процедуры insert(L,x,i).
procedure insert(var L: list; x: elemtype; i:integer);
{ вставляет в список L элемент x перед i-м элементом }
var p: integer;
begin
в 3-ей компонен-
те теперь новое
значение
L
Monday
Wednesday
Thursday
Friday
Saturday
5
3-я компонента свобо-
дна для записи нового
значения
L
Monday
Wednesday
Friday
Friday
Saturday
4
бывшие третий и
четвертый элементы
теперь занимают
четвертую и пятую
компоненты
L
Monday
Wednesday
Friday
Saturday
4
                        L          Monday          4
                                 Wednesday
                                   Friday
                                  Saturday




       Создать такой список можно следующими действиями: сделать список L
пустым, затем поочередно вставлять в него элементы в нужном порядке.
Сделать список пустым весьма просто – достаточно обнулить поле last,
поскольку список пуст, если его длина равна нулю. Оформим это действие в
виде процедуры make_null(L):

procedure make_null(var L: list);
 { делает список L пустым }
  begin
    L.last:=0 { длина списка стала равна нулю }
  end; {make_null}

       Вставка нового элемента x перед i-м элементом списка осуществляется в
два этапа: во-первых, все значения из компонент массива elems с индексами i,
i+1, …, last перемещаются соответственно в компоненты с индексами i+1, i+2,
…, last+1; во-вторых, в i-ю компоненту помещается элемент x,и значение
поля last увеличивается на единицу.
      Ниже показано, что происходит при вставке значения Thursday
перед третьим элементом списка < Monday, Wednesday, Friday,
Saturday>.

     после 1-го этапа вставки:                     после 2-го этапа вставки:

L      Monday           4                      L     Monday          5
     Wednesday         3-я компонента свобо-       Wednesday
                      дна для записи нового                         в 3-ей компонен-
       Friday         значения
                                                    Thursday
                                                                    те теперь новое
       Friday           бывшие третий и              Friday         значение
      Saturday          четвертый элементы          Saturday
                        теперь занимают
                        четвертую и пятую
                        компоненты



      Операцию вставки оформим в виде процедуры insert(L,x,i).

procedure insert(var L: list; x: elemtype; i:integer);
 { вставляет в список L элемент x перед i-м элементом }
 var p: integer;
  begin

                                      - 11 -