1 #include <stdio.h>
2 #include <stdlib.h>
3 
4 typedef struct elem_ {
5     int val;
6     struct elem_* next;
7 } elem;
8 
sum(elem * linked_list)9 int sum(elem* linked_list)
10 {
11     elem* p = linked_list;
12     int n = 0;
13 
14     while (p != NULL) {
15         n += p->val;
16         p = p->next;
17     }
18 
19     return n;
20 }
21 
alloc()22 elem* alloc()
23 {
24     elem* elem_0 = (elem*)malloc(sizeof(elem));
25     elem_0->val = 0;
26     elem_0->next = NULL;
27 
28     return elem_0;
29 }
30 
main()31 int main()
32 {
33     elem* linked_list = alloc();
34 
35     // Allocate some elements
36     elem* elem_0 = alloc();
37     elem* elem_1 = alloc();
38     elem* elem_2 = alloc();
39 
40     elem_0->val = 1;
41     elem_1->val = 2;
42     elem_2->val = 3;
43 
44     // Link them together!
45     linked_list->next = elem_0;
46     elem_0->next = elem_1;
47     elem_1->next = elem_2;
48 
49     printf("The sum is %d.\n", sum(linked_list));
50 }
51