LL_PushLast(*list, info); //добавить новый элемент в конец списка
}
puts("\nCompleted\n");
WaitAnyKey(); //ожидание какой-либо клавиши
}
/*=======================================================================================
* Вывод данных списка на экран
*======================================================================================*/
void OutputList(LL_LinkedList *list)
{
PersonalData *info = NULL;
LL_MoveToItem(list, LL_MOVETO_FIRST);
//заголовок формы
system("cls");
puts("*** View list content ***\n\n");
//-------------------------------------------------------------------------
if (NULL == list)
{
puts("ERROR: wrong entry data");
WaitAnyKey();
return;
}
//вывод данных
LL_MoveToItem(list, LL_MOVETO_FIRST); //переход в начало списка
do
{
info = (PersonalData*)LL_GetData(list); //получить данные
if (NULL == info)
{
puts("ERROR: Data is empty. You should create list before.");
}
else
{
printf("%s; %s", info->LastName, asctime(&info->birthDate));
}
} while (LL_ERR_OK == LL_MoveToItem(list, LL_MOVETO_NEXT));
WaitAnyKey(); //ожидание какой-либо клавиши
}
/*=======================================================================================
* Добавление нового элемента в конец списка
*======================================================================================*/
void AddNewItem(LL_LinkedList *list)
{
PersonalData *info = NULL;
//заголовок формы
system("cls");
puts("*** Add new item at the end of list ***\n\n");
if (NULL == list)
{
puts("ERROR: wrong entry data");
WaitAnyKey();
return;
}
info = (PersonalData*)malloc(sizeof(PersonalData)); //выделение памяти
if (InputPersonalData(info)) //ввод данных пользователем
{
if (LL_ERR_OK == LL_PushLast(list, info))
{
puts("\nCompleted\n");
}
else
{
puts("ERROR: cannot to add new data. It's possible you should create list before\n or you have entered wrong values.\n");
}
}
else
{
puts("ERROR: cannot to add new data. You have entered incorect values.\n");
}
WaitAnyKey(); //ожидание какой-либо клавиши
}
/*=======================================================================================
* Добавление нового элемента в соответствии с сортировкой списка
*======================================================================================*/
void AddNewItemInSortingOrder(LL_LinkedList *list, LL_SortOreder order)
{
PersonalData *info = NULL;
// заголовок формы
system("cls");
puts("*** Add new item according to sorting order of list ***\n\n");
if (NULL == list)
{
puts("ERROR: wrong entry data");
WaitAnyKey();
return;
}
//если список не отсортирован вернуть ошибку. Сначала список должен быть отсортирован
if (!(LL_SORT_INCREASE == order || LL_SORT_DECREASE == order))
{
puts("ERROR: cannot add new item according to sorting order.\nYou should sort list (command 4) before");
WaitAnyKey();
return;
}
info = (PersonalData*)malloc(sizeof(PersonalData)); //выделение памяти
if (InputPersonalData(info)) //ввод данных пользователем
{
if (LL_ERR_OK == LL_PushInSortOrder(list, order, info))
{
puts("\nCompleted\n");
}
else
{
puts("ERROR: cannot to add new data. It's possible you should create list before\n or you have entered wrong values.\n");
}
}
else
{
puts("ERROR: cannot to add new data. You have entered incorect values.\n");
}
WaitAnyKey(); //ожидание какой-либо клавиши
}
/*=======================================================================================
* Сортировать лист в порядке возрастания или убывания (по выбору пользователя)
*======================================================================================*/
void SortList(LL_LinkedList *list, LL_SortOreder *order)
{
LL_Error err = LL_ERR_OK;
//заголовок формы
system("cls");
puts("*** Sort the list ***\n\n");
if (NULL == list || NULL == order)
{
*order = LL_SORT_NOTSORTED;
puts("ERROR: wrong entry data");
WaitAnyKey();
}
//выбор пользователем порядка сортировки (1 – по возрастанию; 2 – по убыванию)
printf("Select sorting order (1 - increase; 2 - decrease): ");
scanf("%d", order);
//проверка выбранного порядка (возвратить ошибку, если введены некорректные данные)
if (!(LL_SORT_INCREASE == *order || LL_SORT_DECREASE == *order))
{
*order = LL_SORT_NOTSORTED;
puts("ERROR: wrong value. You should select between the increase (1) and the decrease (2).");
WaitAnyKey();
return;
}
//сортировать лист
if (LL_ERR_OK == (err = LL_SortList(list, *order)))
{
puts("\nCompleted\n");
}
else
{
printf("ERROR: LL_SortList returns error %d", err);
}
WaitAnyKey(); //ожидание какой-либо клавиши
return;
}
/*=======================================================================================
* Введение пользователем данных: фамилия и дата рождения
*=====================================================================================*/
boolean InputPersonalData(PersonalData *info)
{
int szBuf = 32;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.