#include #include "assert.h" struct list_node { int data; struct list_node *next; }; typedef struct list_node list_node_t; int list_length(list_node_t * list) { list_node_t *cur; int count = 0; cur = list; while (cur != NULL) { count++; cur = cur->next; } return count; } void list_print(list_node_t * list) { list_node_t *cur; cur = list; while (cur != NULL) { printf("%d ", cur->data); cur = cur->next; } printf("\n"); } int main(int argc, char *argv[]) { list_node_t *emptylist = NULL; assert(list_length(emptylist) == 0); list_print(emptylist); printf("list_length = %d\n", list_length(emptylist)); list_node_t foo = { 1, NULL }; assert(list_length(&foo) == 1); list_print(&foo); printf("list_length = %d\n", list_length(&foo)); }