Составители:
Рубрика:
//то корректировка указателей на предыдущий и последующий элементы
(KeyX->Prev)->Next = KeyX->Next;
(KeyX->Next)->Prev = KeyX->Prev;
}
free(KeyX); // Удаляем элемент
return true;
}
return false;
}
Сортировка связанного списка заключается в изменении связей между элементами.
Алгоритм состоит в том, что исходный список просматривается, и каждый новый эле-
мент вставляется в список на место, определяемое значением его ключа. Решение такой
задачи демонстрируется функцией SortElement():
void SortElement(X **BeginX, X **EndX, int A)
{
X *NewElement;
NewElement = (X *)malloc(sizeof(X)); // Выделяем память
NewElement->Value = A;
X * Element = *BeginX; // Встаем на начало списка
while (Element) // Просматриваем
{
if (A < Element->Value) //Если значение меньше текущего
{ // Заносим перед текущим элементом
NewElement->Next = Element;
if (Element == *BeginX)
{ // В начало списка
NewElement->Prev =0;
*BeginX = NewElement;
}
else
{ // Или в середину списка
(Element->Prev)->Next = NewElement;
NewElement->Prev = Element->Prev;
}
Element->Prev = NewElement;
return;
}
Element = Element->Next;
}
NewElement->Next =0; //Заносим в конец списка
NewElement->Prev = *EndX;
(*EndX)->Next = NewElement;
*EndX = NewElement;
}
В заключение рассмотрения линейных списков рассмотрим пример использования
функций. В этом примере первоначально создается один элемент со значением 0; далее
добавляются в
конец списка элементы со значениями от 3 до 7; после этого вставляется
элемент со значением 1 после элемента со значением 0; удаляется элемент со значением
6 и затем вставляется элемент со значением 2 согласно сортировки по возрастанию.
66
//то корректировка указателей на предыдущий и последующий элементы
(KeyX->Prev)->Next = KeyX->Next;
(KeyX->Next)->Prev = KeyX->Prev;
}
free(KeyX); // Удаляем элемент
return true;
}
return false;
}
Сортировка связанного списка заключается в изменении связей между элементами.
Алгоритм состоит в том, что исходный список просматривается, и каждый новый эле-
мент вставляется в список на место, определяемое значением его ключа. Решение такой
задачи демонстрируется функцией SortElement():
void SortElement(X **BeginX, X **EndX, int A)
{
X *NewElement;
NewElement = (X *)malloc(sizeof(X)); // Выделяем память
NewElement->Value = A;
X * Element = *BeginX; // Встаем на начало списка
while (Element) // Просматриваем
{
if (A < Element->Value) //Если значение меньше текущего
{ // Заносим перед текущим элементом
NewElement->Next = Element;
if (Element == *BeginX)
{ // В начало списка
NewElement->Prev =0;
*BeginX = NewElement;
}
else
{ // Или в середину списка
(Element->Prev)->Next = NewElement;
NewElement->Prev = Element->Prev;
}
Element->Prev = NewElement;
return;
}
Element = Element->Next;
}
NewElement->Next =0; //Заносим в конец списка
NewElement->Prev = *EndX;
(*EndX)->Next = NewElement;
*EndX = NewElement;
}
В заключение рассмотрения линейных списков рассмотрим пример использования
функций. В этом примере первоначально создается один элемент со значением 0; далее
добавляются в конец списка элементы со значениями от 3 до 7; после этого вставляется
элемент со значением 1 после элемента со значением 0; удаляется элемент со значением
6 и затем вставляется элемент со значением 2 согласно сортировки по возрастанию.
66
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »
