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 ! > > > > > > > >
