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

Reply via email to