ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
{
help=new Node;
help->info=k;
current->next=help;
help->prev=current;
current=current->next;
}
// установка признака конца двусвязного списка
L.tail=current;
current->next=NULL;
fclose(f);
return 1;
}
Задача 2. Дан двусвязный список, содержащий целые числа. Определить,
является ли он симметричным.
При решении задачи используются две переменные-указатели b и e для
просмотра элементов с начала и с конца списка соответственно. Для этого их
начальные значения устанавливаются на L.head и L.tail. Смещая их од-
новременно (b на следующий элемент, e – на предыдущий), проверяем значе-
ния в этих узлах на равенство. Смещение заканчивается в одном из двух слу-
чаев:
1) встретилась неравная пара значений;
2) были просмотрены все элементы списка. При нечетном количестве
узлов адреса b и e совпадут (рис. 5.2).
При четном количестве узлов адрес b будет указывать на первый элемент
второй половины списка, а e – на последний элемент первой половины. В
этом случае в качестве условия выхода из цикла можно использовать одно из
следующих равенств: b->prev=e или e->next=b (рис. 5.3).
Если встретилась неравная пара значений, то смещение указателей пре-
кращается, и функция возвращает значение false. Если просмотрены все
элементы, то список является симметричным, и функция возвращает значение
true. По определению пустой список является симметричным.
82
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
{
help=new Node;
help->info=k;
current->next=help;
help->prev=current;
current=current->next;
}
// установка признака конца двусвязного списка
L.tail=current;
current->next=NULL;
fclose(f);
return 1;
}
Задача 2. Дан двусвязный список, содержащий целые числа. Определить,
является ли он симметричным.
При решении задачи используются две переменные-указатели b и e для
просмотра элементов с начала и с конца списка соответственно. Для этого их
начальные значения устанавливаются на L.head и L.tail. Смещая их од-
новременно (b на следующий элемент, e – на предыдущий), проверяем значе-
ния в этих узлах на равенство. Смещение заканчивается в одном из двух слу-
чаев:
1) встретилась неравная пара значений;
2) были просмотрены все элементы списка. При нечетном количестве
узлов адреса b и e совпадут (рис. 5.2).
При четном количестве узлов адрес b будет указывать на первый элемент
второй половины списка, а e – на последний элемент первой половины. В
этом случае в качестве условия выхода из цикла можно использовать одно из
следующих равенств: b->prev=e или e->next=b (рис. 5.3).
Если встретилась неравная пара значений, то смещение указателей пре-
кращается, и функция возвращает значение false. Если просмотрены все
элементы, то список является симметричным, и функция возвращает значение
true. По определению пустой список является симметричным.
82
Страницы
- « первая
- ‹ предыдущая
- …
- 80
- 81
- 82
- 83
- 84
- …
- следующая ›
- последняя »
