static void test_empty(void) { struct list_node *spos, *ssafe; struct node *pos, *safe; check(!slist_is_empty(&slist), "slist is empty but slist_is_empty returned false"); check(!list_is_empty(&list), "list is empty but list_is_empty returned false"); check(slist_head(&slist) != &slist, "slist is empty but slist_head returned non-self"); check(list_head(&list) != NULL, "list is empty but list_head returned non-NULL"); check(slist_tail(&slist) != &slist, "slist is empty but slist_tail returned non-self"); check(list_tail(&list) != NULL, "list is empty but list_tail returned non-NULL"); check_loop_never(slist_for_each(spos, &slist), "slist is empty, but slist_for_each looped"); check_loop_never(list_for_each(pos, &list), "list is empty, but list_for_each looped"); check_loop_never(slist_for_each_safe(spos, ssafe, &slist), "slist is empty, but slist_for_each_safe looped"); check_loop_never(list_for_each_safe(pos, safe, &list), "list is empty, but list_for_each_safe looped"); check_loop_never(slist_for_each_entry(pos, &slist, node), "slist is empty, but slist_for_each_entry looped"); check_loop_never(slist_for_each_entry_safe(pos, safe, &slist, node), "slist is empty, but slist_for_each-entry_safe looped"); }
int main() { struct node_info *phead = NULL; struct node_info s[] = { {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, }; int i; for (i = 0; i < N_ELEMT(s); ++i) { slist_add( &phead, s + i); } slist_for_each(phead); return 0; }
int main() { struct node_info *phead = slist_init(); int i; for (i = 0; i < 10; ++i) { slist_add_tail(phead, i); } if (slist_del(phead, 5) < 0) { fprintf(stderr, "slist_del failed\n"); exit(1); } //slist_for_each_invert(phead); slist_invert(phead); slist_for_each(phead); printf("\n"); // slist_destroy(phead); return 0; }