
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных
- •Программирование и структуры данных

Программирование и структуры данных |
2007 г. |
Операции над списками
1. |
Создание пустого списка с указателем p |
|
|
|
|
p = NULL; |
|
2. |
Создание нового элемента *i и запись в него sim |
||
i = malloc (sizeof(struct el_sp)); /* Получение памяти |
*/ |
||
if (i != NULL) |
/* Есть место |
*/ |
|
|
i->zn = sim; |
/* Запись значения |
*/ |
else ... |
/* Нет свободной памяти */ |
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
1 |
|
|
1 |

Программирование и структуры данных |
2007 г. |
||
|
|
Операции над списками |
|
3. Включение элемента *j в начало списка с |
|
||
указателем p |
|
|
|
p |
|
. . . |
X |
|
|
|
|
j |
|
|
|
*j |
|
|
|
j->uk = p; |
/* Соединить *j с первым элементом */ |
||
p = j; |
/* Прицепить *j к указателю списка |
*/ |
|
Эта операция выполняется правильно и для пустого |
|||
списка. |
|
|
|
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
1 |
|
|
|
|
2 |

Программирование и структуры данных |
2007 г. |
Операции над списками
4. Включение элемента *j в список после элемента *i
i *i
|
|
|
|
|
|
|
|
|
|
|
|
|
. . . |
|
|
|
X |
|
||
. . . |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j
*j
j->uk = i->uk; i->uk = j;
/* Соединить *j с преемником элемента *i */
/* Прицепить *j к элементу *i |
*/ |
Эта операция выполняется и в конце списка, когда элемент *i не имеет преемника.
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
1 |
|
|
3 |

Программирование и структуры данных |
2007 г. |
Операции над списками
5. Исключение первого элемента из списка p:
p
zn uk |
|
j |
. . . 0
if (p != NULL)
{j = p;
p = p->uk;
free (j);
}
else ...
/* Cуществует первый элемент |
*/ |
/* Запомнить адрес 1-го элемента */ |
|
/* Соединить p со вторым элементом */
/* Освободить память *j |
*/ |
/* список пуст |
*/ |
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
1 |
|
|
4 |

Программирование и структуры данных |
2007 г. |
Операции над списками
6. Исключение из списка преемника элемента *i :
i |
|
*i |
j |
|
|
|
|
. . . |
|
… |
|
|
if (i->uk != NULL) /* Существует преемник элемента *i */
{ j = i->uk;
i->uk = i->uk->uk; } free (j);
else ...
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
1 |
|
|
5 |

Программирование и структуры данных |
2007 г. |
Операции над списками
7. Проход по списку p (в том числе пустому) с обработкой всех его элементов:
i = p;
while (i != NULL) { . . .
} i = i->uk;
/* не конец списка |
*/ |
/* Обработка текущего элемента *i |
*/ |
/* Переход к след. элементу списка |
*/ |
Вариант с оператором for: for (i = p; i != NULL; i = i->uk)
. . . /* Обработка текущего элемента *i */
Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. |
КГТУ (КАИ), кафедра АСОИУ |
1 |
|
|
6 |