Элементы программирования на Си. Родионова Т.Е. - 40 стр.

UptoLike

Составители: 

40
Список - это множество элементов, каждый из которых состоит, как мини-
мум, из двух полей. Одно поле содержит либо саму информацию, либо ссылку на
нее. Другое поле содержит ссылку на следующий элемент списка. Элемент списка
называют "звено " списка. Таким образом, список - это цепочка связанных звеньев от
первого до последнего. Последнее звено не ссылается на следующий элемент, по-
этому поле ссылки имеет значение "пустой указатель". По однонаправленному спи-
ску можно двигаться только в одном направлении - от заглавного (первого) звена к
последнему.
Двунаправленный (двусвязный) список - это множество элементов, каждый
из которых имеет два поля с указателями; одно поле содержит ссылку на следую-
щий элемент, другое поле - ссылку на предыдущий элемент, и информационное
поле.
Наличие ссылок как на следующее звено, так и на предыдущее позволяет от
каждого звена двигаться по списку в любом направлении.
Список, первое звено которого имеет ссылку на последнее, а последнее на
первое называется кольцевым. Кольцевой список имеет заглавное звено. Заглав-
ное звено, как и в случае однонаправленного списка, позволяет обрабатывать пер-
вое и последнее звенья в общем цикле. Однако в таком кольцевом списке надо каж-
дый раз проверять, не является ли очередное звено заглавным.
Характерной особенностью динамических данных является невозможность
установить заранее фиксированный объем памяти. Выделение памяти под отдель-
ное звено списка происходит в тот момент, когда она появляется во время выпол-
нения программы, а не во время трансляции.
Управление оперативной памятью реализуется посредством библиотечных
функций, содержащихся в файле <alloc.h>: malloc, calloc, free. Функции malloc и
calloc осуществляют выделение памяти, а функция free - ее освобождение.
Функция malloc(unsigned size) возвращает в качестве своего значения указа-
тель на область памяти. Размер этой области в байтах определяется с помощью ар-
гумента size. Если выделение объема памяти невозможно, то результатом функции
будет пустой указатель.
Функция calloc(unsigned count, size) выделяет обнуленную область памяти, в
которой можно разместить count объектов размером size каждый. Результат функ-
ции - указатель на выделенную область памяти.
Функция free(ptr) освобождает область памяти, выделенную ранее, опреде-
ляемую с помощью аргумента ptr.