Объясните код списка - C (СИ)

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

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

Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #define SIZE 11
  4. typedef int TE;
  5. struct list
  6. {
  7. TE data;
  8. struct list *next;
  9. };
  10. struct list* add ( struct list *list0, TE n )
  11. {
  12. struct list *pointer = malloc( sizeof( struct list ) );
  13. pointer -> data = n;
  14. pointer -> next = list0;
  15. list0 = pointer;
  16. return list0;
  17. }
  18. void print ( struct list *list0 )
  19. {
  20. struct list *pointer = list0;
  21. while ( pointer != 0 )
  22. {
  23. printf( "%4d", pointer -> data );
  24. pointer = pointer -> next;
  25. }
  26. printf( "\n" );
  27. }
  28. void printToFile( FILE *f, struct list *list0 )
  29. {
  30. struct list *pointer = list0;
  31. while ( pointer != 0 )
  32. {
  33. fprintf( f, "%4d", pointer -> data );
  34. pointer = pointer -> next;
  35. }
  36. fprintf( f, "\n" );
  37. }
  38. unsigned int is_empty( struct list * list0 )
  39. {
  40. return list0 == NULL;
  41. }
  42. struct list* insert( struct list *list0, TE n )
  43. {
  44. struct list *p = malloc( sizeof( struct list ) ), *cur;
  45. p -> data = n;
  46. p -> next = 0;
  47. if ( !list0 )
  48. list0 = p;
  49. else
  50. {
  51. cur = list0;
  52. while ( cur -> next != 0 )
  53. cur = cur -> next;
  54. p -> next = cur -> next;
  55. cur -> next = p;
  56. }
  57. return list0;
  58. }
  59. float average( struct list *list0 )
  60. {
  61. struct list *pointer = list0;
  62. float sum = 0.0;
  63. unsigned int number = 0;
  64. while ( pointer )
  65. {
  66. number++;
  67. sum += pointer -> data;
  68. pointer = pointer -> next;
  69. }
  70. return sum * 1.0 / number;
  71. }
  72. struct list* swapFrontBack( struct list *list0 )
  73. {
  74. struct list *pointer = list0;
  75. while ( pointer -> next )
  76. pointer = pointer -> next;
  77. int temp = list0 -> data;
  78. list0 -> data = pointer -> data;
  79. pointer -> data = temp;
  80. return list0;
  81. }
  82. struct list* replace( struct list *list0, TE e1, TE e2 )
  83. {
  84. struct list *pointer = list0;
  85. while ( pointer )
  86. {
  87. if ( pointer -> data == e1 )
  88. pointer -> data = e2;
  89. pointer = pointer -> next;
  90. }
  91. return list0;
  92. }
  93. int main()
  94. {
  95. struct list *head = NULL;
  96. int index;
  97. for( index = 0; index <= SIZE; ++index )
  98. {
  99. head = insert( head, index );
  100. }
  101. head = swapFrontBack( head );
  102. replace( head, 4, 111 );
  103. print( head );
  104. printf( "Average = %7.4f\n", average( head ) );
  105. FILE *file = fopen( "input1.txt", "w" );
  106. printToFile( file, head );
  107. fclose( file );
  108. return 0;
  109. }

Решение задачи: «Объясните код списка»

textual
Листинг программы
  1. struct list* replace( struct list *list0, TE e1, TE e2 )

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


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

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

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

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

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

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