fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef struct ListNode_s {
  5. int value;
  6. struct ListNode_s *next;
  7. } ListNode;
  8.  
  9. ListNode *list_push(ListNode **root, int value)
  10. {
  11. ListNode *node = calloc(1, sizeof(ListNode));
  12. node->value = value;
  13. node->next = *root;
  14. *root = node;
  15. return node;
  16. }
  17.  
  18. ListNode *list_pop(ListNode **root)
  19. {
  20. if (!root || !*root) {
  21. return NULL;
  22. }
  23. ListNode *node = *root;
  24. *root = (*root)->next;
  25. return node;
  26. }
  27.  
  28. void list_deleteNode(ListNode *node)
  29. {
  30. if (node) {
  31. free(node);
  32. }
  33. }
  34.  
  35. void list_deleteList(ListNode *list)
  36. {
  37. while (list) {
  38. ListNode *toFree = list;
  39. list = list->next;
  40. list_deleteNode(toFree);
  41. }
  42. }
  43.  
  44. float list_avg(ListNode *list)
  45. {
  46. int s = 0, l = 0;
  47. while (list) {
  48. s += list->value;
  49. l += 1;
  50. list = list->next;
  51. }
  52. return s / (float)l;
  53. }
  54.  
  55. int main()
  56. {
  57. ListNode *list = NULL;
  58. list_push(&list, 1073741824);
  59. list_push(&list, 1073741824);
  60. printf("%f\n", list_avg(list));
  61. list_deleteList(list);
  62.  
  63. return 0;
  64. }
Success #stdin #stdout 0s 4380KB
stdin
Standard input is empty
stdout
-1073741824.000000