ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
head=help;
}
}
Задача 5. Дан односвязный список, содержащий целые числа. Написать
функцию разбиения списка на два таких, что в одном будут содержаться толь-
ко четные числа, в другом - нечетные.
Функция имеет три параметра: head – содержит начало исходного
списка, head1 – списка с нечетными элементами, head2 – с четными. Пере-
менные current1, current2 используются для хранения текущих элемен-
тов создаваемых списков. Начальные значения head1, head2, current1,
current2 устанавливаются в NULL, поскольку результирующие списки еще
не созданы.
Двигаясь по элементам исходного списка, проверяем, к какой группе от-
носится очередной элемент. Если значение информационного поля четное,
добавляем элемент в список с заголовком head2. Для этого, если в списке
еще нет элементов, то значения переменных head2 и current2 становятся
равными адресу этого элемента. Если же в списке уже имеются элементы, то
он добавляется в конец:
current2->next=head;
current2=current2->next;
Аналогично поступаем и в том случае, когда встречается нечетный эле-
мент, только используем переменные head1 и current1.
// определение функции разбиения списка на два -
// в одном четные элементы, в другом - нечетные
void Decompose(List*& head, List*& head1, List*& head2)
{
List* current1=NULL,*current2=NULL;
head1=NULL; head2=NULL;
// просмотр элементов исходного списка
while(head!=NULL)
{
// если значение текущего элемента четное
if(head->info%2==0)
{
// добавляем элемент в список
// с четными значениями элементов
if(head2==NULL)
// список еще пуст
62
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
head=help;
}
}
Задача 5. Дан односвязный список, содержащий целые числа. Написать
функцию разбиения списка на два таких, что в одном будут содержаться толь-
ко четные числа, в другом - нечетные.
Функция имеет три параметра: head – содержит начало исходного
списка, head1 – списка с нечетными элементами, head2 – с четными. Пере-
менные current1, current2 используются для хранения текущих элемен-
тов создаваемых списков. Начальные значения head1, head2, current1,
current2 устанавливаются в NULL, поскольку результирующие списки еще
не созданы.
Двигаясь по элементам исходного списка, проверяем, к какой группе от-
носится очередной элемент. Если значение информационного поля четное,
добавляем элемент в список с заголовком head2. Для этого, если в списке
еще нет элементов, то значения переменных head2 и current2 становятся
равными адресу этого элемента. Если же в списке уже имеются элементы, то
он добавляется в конец:
current2->next=head;
current2=current2->next;
Аналогично поступаем и в том случае, когда встречается нечетный эле-
мент, только используем переменные head1 и current1.
// определение функции разбиения списка на два -
// в одном четные элементы, в другом - нечетные
void Decompose(List*& head, List*& head1, List*& head2)
{
List* current1=NULL,*current2=NULL;
head1=NULL; head2=NULL;
// просмотр элементов исходного списка
while(head!=NULL)
{
// если значение текущего элемента четное
if(head->info%2==0)
{
// добавляем элемент в список
// с четными значениями элементов
if(head2==NULL)
// список еще пуст
62
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
