1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /****************************************************************************
- *
- * MODULE: btree
- * AUTHOR(S): CERL (present in ver 4.x)
- * Radim Blazek <radim.blazek gmail.com>
- * Glynn Clements <glynn gclements.plus.com>
- * PURPOSE: balanced tree - possibly duplicating libavl functionality; see
- * http://grass.itc.it/pipermail/grass-dev/2007-April/030396.html
- * COPYRIGHT: (C) 2002-2007 by the GRASS Development Team
- *
- * This program is free software under the GNU General Public
- * License (>=v2). Read the file COPYING that comes with GRASS
- * for details.
- *
- *****************************************************************************/
- #include <stdio.h>
- #include <string.h>
- #include <grass/btree.h>
- static int cmp(const void *a, const void *b)
- {
- return strcmp(a, b);
- }
- int main(void)
- {
- char key[100], data[100];
- void *k, *d;
- BTREE B;
- btree_create(&B, strcmp, 10);
- while (1) {
- fprintf(stdout, "enter key (or RETURN if done): ");
- if (!gets(key))
- exit(0);
- if (*key == 0)
- break;
- fprintf(stdout, " ");
- if (btree_find(&B, key, &d))
- fprintf(stdout, "%s = %s\n", key, d);
- else
- fprintf(stdout, "%s - not found\n", key);
- fprintf(stdout, " ");
- fprintf(stdout, "enter new value (or RETURN if none): ");
- if (!gets(data))
- exit(0);
- if (*data)
- btree_update(&B, key, strlen(key) + 1, data, strlen(data) + 1);
- }
- fprintf(stdout, "final tree\n");
- btree_rewind(&B);
- while (btree_next(&B, &k, &d))
- fprintf(stdout, "%s:%s\n", (const char *)k, (const char *)d);
- return 0;
- }
|