Отсортировать элементы списка (структуры) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет всем. Подскажите, как можно сортануть элементы списка. Есть список книг и нужно упорядочить их по количеству страниц. Вот пример:
Листинг программы
  1. #include <stdio.h>
  2. #include <cs50.h>
  3. int main (void)
  4. {
  5. typedef struct list
  6. {
  7. char *name;
  8. int pages;
  9. struct list *next;
  10. } list;
  11. list *book1, *book2,*book3;
  12. book1 = book2 = book3 = NULL;
  13. book1 = malloc(sizeof(list));
  14. book1->pages = 200;
  15. book1->next = NULL;
  16. book2 = malloc(sizeof(list));
  17. book2->pages = 150;
  18. book2->next = NULL;
  19. book3 = malloc(sizeof(list));
  20. book3->pages = 300;
  21. book3->next = NULL;
  22. book1->next = book2;
  23. book2->next = book3;
  24. book3->next = NULL;
  25. list *ptr1;
  26. ptr1 = book1;
  27. list *ptr2;
  28. ptr2 = book1;
  29. while(ptr1!=NULL)
  30. {
  31. while(ptr2!=NULL)
  32. {
  33. if(ptr2->next->pages < ptr2->pages)
  34. {
  35. list *minbook;
  36. minbook=ptr2->next;
  37. ptr2->next=ptr2;
  38. ptr2=minbook;
  39. }
  40. ptr2=ptr2->next;
  41. }
  42. ptr1=ptr1->next;
  43. }
  44. ptr1=ptr2;
  45. while(ptr1!=0)
  46. {
  47. printf("%d\n",ptr1->pages);
  48. }
  49. }

Решение задачи: «Отсортировать элементы списка (структуры)»

textual
Листинг программы
  1. int n = 3;
  2.     list *books = malloc(sizeof(list)*n);
  3.     books[0] = *book1;
  4.     books[1] = *book2;
  5.     books[2] = *book3;
  6.  
  7.     for (int i = 0; i < n; i++)
  8.         printf("%d\n", books[i].pages);
  9.  
  10.     puts("\n\n");
  11.  
  12.     for (int i = 0; i<n-1; i++)
  13.         for (int j = 0; j<n-1; j++)
  14.             if (books[j+1].pages < books[j].pages)
  15.             {
  16.                 temp = books[j+1];
  17.                 books[j+1] = books[j];
  18.                 books[j] = temp;
  19.             }
  20.  
  21.  
  22.     for (int i = 0; i < n; i++)
  23.         printf("%d\n", books[i].pages);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы