Sorry, I was not paying attention and replied to the wrong email. ---------------------------------------------------------------- Erwin Kalvelagen Amsterdam Optimization Modeling Group [email protected] https://www.amsterdamoptimization.com <https://amsterdamoptimization.com> ----------------------------------------------------------------
On Mon, Aug 10, 2020 at 10:25 AM Erwin Kalvelagen < [email protected]> wrote: > Operator error!! > ---------------------------------------------------------------- > Erwin Kalvelagen > Amsterdam Optimization Modeling Group > [email protected] > https://www.amsterdamoptimization.com <https://amsterdamoptimization.com> > ---------------------------------------------------------------- > > > On Mon, Aug 10, 2020 at 9:41 AM Andrew Makhorin <[email protected]> wrote: > >> On Mon, 2020-08-10 at 14:28 +0200, Domingo Alvarez Duarte wrote: >> > Hello ! >> > >> > Replacing usages of AVL tree by SplayTree I found that AVL tree >> > silently >> > accepts duplicate keys on "avl_insert_node" see example bellow, there >> > is >> > only one way to find by key "avl_find_node" which make it prone to >> > write >> > incorrect code: >> > >> >> AVL routines are not intended to be used on API level. Formally, these >> routines are not available to the user. >> >> Both AVL and splay trees take logarithmic time, so there is not much >> sense to use the latter. To really reduce the search time it would be >> better to use hashing. >> >> >> PS: Please post messages not related to bug reports to help-glpk rather >> than to bug-glpk. Thanks. >> >> >> > ==== >> > >> > #include <stdio.h> >> > #include <stdlib.h> >> > #include "avl.h" >> > >> > int main(int argc, char *argv[]) >> > { >> > AVL *tree = avl_create_tree(avl_strcmp, NULL); >> > AVLNODE *node1 = avl_insert_node(tree, "one"); >> > printf("node1 = %p\n", node1); >> > AVLNODE *node2 = avl_insert_node(tree, "one"); >> > printf("node2 = %p\n", node2); >> > AVLNODE *node3 = avl_insert_node(tree, "one"); >> > printf("node3 = %p\n", node3); >> > AVLNODE *node = avl_find_node(tree, "one"); >> > printf("node = %p\n", node); >> > avl_delete_node(tree, node1); >> > node = avl_find_node(tree, "one"); >> > printf("node = %p\n", node); >> > avl_delete_node(tree, node2); >> > node = avl_find_node(tree, "one"); >> > printf("node = %p\n", node); >> > avl_delete_tree(tree); >> > return 0; >> > } >> > >> > ==== >> > >> > Build: >> > >> > ==== >> > >> > gcc -g -o test-avl test-avl.c -I../src/misc -I../src >> > ../src/.libs/libglpk.a >> > >> > ==== >> > >> > Output: >> > >> > ===== >> > >> > ./test-avl >> > node1 = 0x55f599e6d908 >> > node2 = 0x55f599e6d940 >> > node3 = 0x55f599e6d978 >> > node = 0x55f599e6d940 >> > node = 0x55f599e6d940 >> > node = 0x55f599e6d978 >> > >> > ===== >> > >> > Cheers ! >> > >> > >> > >> >>
