Линия
doubly * table[hashsize];
создает локальную переменную table
, которая перекрывает элемент с тем же именем.
Также обратите внимание, что строка
memset(table,NULL,hashsize);// This is giving segmentation fault
неверен, поскольку устанавливает hashsize
байт , тогда как ваш table
является массивом hashsize
указателей , каждый из которых содержит более одного байта (обычно 4 на 32-битной машине), т.е. sizeof(table) >= hashsize * sizeof(doubly*)
Однако, вероятно, segfault является результатом попытки записать огромный кусок памяти (по крайней мере, 4 ГБ), как указывал @Nawaz).