Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
12.03.2015
Размер:
276.48 Кб
Скачать

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

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

Соседние файлы в папке Презентация лекций (3 семестр)