Читайте также:
|
|
Лекция 16. Обработка списков
Программирование типовых операций
Приведем примеры фрагментов выполнения типовых операций над списком из примеров 15.1 и 15.2 (лекция 15). Алгоритмы выполнения операций для ссылочных переменных и параллельных массивов одинаковы. Отличаются только обозначения операндов (см. табл. 15.1) и функций управления памятью. Поэтому для параллельных массивов даны лишь некоторые операции.
Для параллельных массивов используются функции управления памятью из примера 14.3. В этом случае перед началом работы требуется инициализация кучи: inic_kuchi ();
Пример 16.1. Переход к следующему элементу списка (продвижение указателя i к преемнику элемента *i) (рис. 16.1).
А) Ссылочные переменные б) Параллельные массивы
i = i->uk; i = uk[i];
Эта операция аналогична операции перехода к следующему элементу в векторе: i = i + 1; где i - индекс некоторого элемента вектора.
а) в векторе: i = i+1; б) в списке: i = i->uk; (или i = uk[i];)
Рис. 16.1. Переход к следующему элементу
Пример 16.2. Создание пустого списка с указателем p
А) Ссылочные переменные б) Параллельные массивы
p = NULL; p = NOL;
Пример 16.3. Создание нового элемента *i и запись в него значения nov_id.
А) Ссылочные переменные
i =(struct el_sp *) malloc (sizeof(struct el_sp)); /* Получение памяти */
if (i!= NULL) /* Есть место */
strcpy(i->id, nov_id); /* Запись значения */
else... /* Нет свободной памяти для нового элемента */
б) Параллельные массивы
i = nov_el(); /* Получение памяти */
if (i!= NOL) /* Есть место */
strcpy (zn[i], nov_id); /* Запись значения */
else... /* Нет свободной памяти для нового элемента */
Пример 16.4. Уничтожeние элемента *i (освобождение занимаемой им памяти):
Дата добавления: 2015-02-16; просмотров: 78 | Поможем написать вашу работу | Нарушение авторских прав |