广州 网站 建设,个人网站设计与开发,哈尔滨网站建设多少钱,nginx wordpress php7算法导论第三版第十一章11.1-4
我们希望在一个非常大的数组上#xff0c;通过利用直接寻址的方式来实现一个字典。开始时#xff0c;该数组中可能包含一些无用信息#xff0c;但要堆整个数组进行初始化时不太实际的#xff0c;因为该数组的规模太大。请给出在大数组上实现…算法导论第三版第十一章11.1-4
我们希望在一个非常大的数组上通过利用直接寻址的方式来实现一个字典。开始时该数组中可能包含一些无用信息但要堆整个数组进行初始化时不太实际的因为该数组的规模太大。请给出在大数组上实现直接寻址字典的方案。每个存储对象占用O1空间SEARCH INSERT 和 DELETE操作的时间均为O1并且对数据结构初始化的时间为O1。
templatetypename T
KeyNodeT* huge_array_search(KeyNodeT** hug_array,int k,StackKeyNodeT* stack)
{KeyNodeT* result hug_array[k];if(stack.contain(result))return result;return nullptr;
}
templatetypename T
void huge_array_insert(KeyNodeT** hug_array,KeyNodeT* value,StackKeyNodeT* stack)
{hug_array[value-key] value;stack.push(value);
}
templatetypename T
void huge_array_delete(KeyNodeT** hug_array,KeyNodeT* value,StackKeyNodeT* stack)
{hug_array[value-key] nullptr;stack.remove(value);
}测试代码 KeyNodeint** array new KeyNodeint*[10000];KeyNodeint* node0 new KeyNodeint(0,0);KeyNodeint* node1 new KeyNodeint(1,1);KeyNodeint* node2 new KeyNodeint(2,2);KeyNodeint* node3 new KeyNodeint(3,3);StackKeyNodeint* stack;huge_array_insert(array,node0,stack);huge_array_insert(array,node1,stack);huge_array_insert(array,node2,stack);couthuge_array_search(array,0,stack)-valueendl;couthuge_array_search(array,1,stack)-valueendl;huge_array_delete(array,node0,stack);couthuge_array_search(array,0,stack)endl;delete[] array;delete node0;delete node1;delete node2;delete node3;时间复杂度为栈的实际大小当栈相对于数组很小时可视为常量。 辅助类 1⃣️ KeyNode链接 2⃣️Stack链接