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

UptoLike

- 16 -
Пусть теперь требуется вставить 'd' после первого элемента списка
<'a', 'c'>. Решение состоит из двух этапов. Во-первых, необходимо создать
«носитель» – звено для хранения вставляемого элемента, и занести этот элемент
в поле elem «носителя». Во-вторых, путём изменения указателей включить
созданное звено в цепочку после первого звена. Первый этап реализуется
фрагментом new(q);q.elem:= 'd', где qвспомогательная переменная
типа link. Фрагмент q.next:= L.next; L.next:=q осуществляет
второй этап вставки. Следующий рисунок иллюстрирует этапы вставки.
L
'a'
'c'
nil
q
{ L.next:= L.next.next }
L
'a'
'b'
'c' nil
q
{ dispose(q)
}
L
'a'
'c'
nil
'd'
q
{ new(q);q.elem:=’d’ }
             { L↑.next:= L↑.next↑.next }



                    'a'                                     'c'     nil
    L                                    'b'


    q



                        { dispose(q)}




                      'a'                                     'c'    nil
        L


        q


      Пусть теперь требуется вставить 'd' после первого элемента списка
<'a', 'c'>. Решение состоит из двух этапов. Во-первых, необходимо создать
«носитель» – звено для хранения вставляемого элемента, и занести этот элемент
в поле elem «носителя». Во-вторых, путём изменения указателей включить
созданное звено в цепочку после первого звена. Первый этап реализуется
фрагментом new(q);q↑.elem:= 'd', где q – вспомогательная переменная
типа link. Фрагмент q↑.next:= L↑.next; L↑.next:=q осуществляет
второй этап вставки. Следующий рисунок иллюстрирует этапы вставки.


              { new(q);q↑.elem:=’d’ }



                      'a'
        L                                    'c'   nil


        q
                       'd'




                                    - 16 -