diff options
Diffstat (limited to 'tests/test94.c')
-rw-r--r-- | tests/test94.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/test94.c b/tests/test94.c new file mode 100644 index 000000000..b51acc51b --- /dev/null +++ b/tests/test94.c @@ -0,0 +1,93 @@ +#include <stdio.h> +#include "utlist.h" + +typedef struct el { + int id, score; + struct el *next, *prev; + struct el *next_list2, *prev_list2; +} el; + +static int order_desc(el *a, el *b) +{ + return (a->score > b->score) ? -1 : (a->score < b->score); +} + +static int order_asc(el *a, el *b) +{ + return -order_desc(a, b); +} + +int main() +{ + int i; + el *head = NULL; + el *head2 = NULL; + el els[15], *e; + + for (i=0; i<15; i++) { + els[i].id = (int)'a'+i; + els[i].score = i%7; + LL_INSERT_INORDER(head, &els[i], order_desc); + LL_INSERT_INORDER2(head2, &els[i], order_asc, next_list2); + } + + printf("LL_INSERT_INORDER\n"); + printf("list1: "); + LL_FOREACH(head, e) { + printf("%c ", e->id); + } + printf("\n"); + printf("list2: "); + LL_FOREACH2(head2, e, next_list2) { + printf("%c ", e->id); + } + printf("\n"); + + printf("DL_INSERT_INORDER\n"); + head = NULL; + head2 = NULL; + for (i=0; i<15; i++) { + DL_INSERT_INORDER(head, &els[i], order_desc); + DL_INSERT_INORDER2(head2, &els[i], order_asc, prev_list2, next_list2); + } + + printf("list1: "); + DL_FOREACH(head, e) { + printf("%c ", e->id); + } + printf("\n"); + printf("list2: "); + DL_FOREACH2(head2, e, next_list2) { + printf("%c ", e->id); + } + printf("\n"); + + printf("CDL_INSERT_INORDER\n"); + head = NULL; + head2 = NULL; + for (i=0; i<15; i++) { + CDL_INSERT_INORDER(head, &els[i], order_desc); + CDL_INSERT_INORDER2(head2, &els[i], order_asc, prev_list2, next_list2); + } + printf("list1:\n"); + CDL_FOREACH(head, e) { + printf("%c ", e->id); + } + printf("\n"); + CDL_FOREACH2(head, e, prev) { + printf("%c ", e->id); + } + printf("\n"); + + printf("list2:\n"); + CDL_FOREACH2(head2, e, next_list2) { + printf("%c ", e->id); + } + printf("\n"); + CDL_FOREACH2(head2, e, prev_list2) { + printf("%c ", e->id); + } + printf("\n"); + + return 0; +} |