散列表为什么可以在O(1)时间复杂度内查找散列值 2023-04-24 668 因为哈希函数的功能就是完成键到哈希值的映射,映射到的哈希值就是一个数字,被用来当作数组的下标,这个元素就是存储在数组的这个下标内。散列表用的其实是数组随机存取的特性。 一、散列表为什么可以在O(1)时 …
用链表实现队列,在元素入列和出列时为什么需要判断链表是否为空 2023-04-24 658 结合《算法》这本书之前代码可知已初始化表尾,元素入列如果为空,则用表尾结点初始化表头结点;出列时,操作的是表头结点,当表中元素为空时,first节点中内容正确,last节点仍存有之前内容,需将其置为空 …
优先队列式分支限界法的通俗的解释是什么 2023-04-24 794 分支界限法,就是用了某种方法来选择较好的情况,略过不必要的情况,达到降低复杂度的目的。其实就是优化(也称剪枝)。用优先队列实现dijkstra就是问题中的例子。建议上oj手写一下,动手做过更能理解。 …
用十字链表构成稀疏矩阵时,为什么每行\列链表为循环链表 2023-04-24 721 因为每行\列链表为循环链表可以解决数组 “不利于插入和删除数据” 的特点,将所有行链表的表头存储到一个数组(rhead),将所有列链表的表头存储到另一个数组(chead)中。 一、用十字链表构成稀疏矩 …
同样的深度优先搜索,使用栈和使用递归的性能差别是什么 2023-04-24 686 同样的深度优先搜索,使用栈和使用递归的性能差别是,对于内存,栈的内容太多了。只压栈的话i和target应该够了,栈的内容只需要和DP的参数一样多。递归的基本思想是,把规模较大的一个问题,分解成规模较小 …
定义数据结构中重复定义结构体类型的作用是什么 2023-04-24 630 定义数据结构中重复定义结构体类型的作用是为了更加直观的表达数据类型。比如Position FindMin(SearchTree T),完全可以写成TreeNode* FindMin(TreeNode* …
结构体变量做函数参数,使用引用和不用引用有什么区别 2023-04-24 642 引用实际上是变量别名。效果等同于操作原对象。不传引用新建了一个Stack副本,副本指针的改变不影响原变量,里面的指针永远指向最初的地址,导致每次只是把这块内存的值从a改到b而没有实现自增。 一、结构体 …
GIS中链状双重独立式编码结构存储优化的方法有哪些 2023-04-24 719 GIS中链状双重独立式编码结构存储优化的方法有把坐标对改为存储起止点及增量。但只是某些优化方法的一部分,本身起不到提高储存效率的作用。如果只是针对储存效率的优化,可以用短整型数来替代浮点数存储。 一、 …
在数据结构里面,指针型节点与普通节点有什么不同 2023-04-24 614 指针型节点与普通节点的不同好比你的学号(指针型节点)和你自己(数据节点)。举个例子,即使一场考试你们班同学并没有按照固定的顺序坐座位,监考老师也能根据你们的学号为你们排座位。 一、在数据结构里面,指针 …
Link&q的形式和Linkq的形式有什么不同 2023-04-24 614 Link&q宣告时的 &,是一个参考的意思。可以想成是定义一个变量的别名. 别名的使用如同一般变量。* void InitQueue(LinkQueue *Q) //传一个指针;* v …
ES6SetMap数据结构出现的意义是什么 2023-04-24 600 Map可以用任何类型作为键。明确保留顺序。同时避免与Object优化场景冲突,性能优化潜力更大。Set可以轻易达到去重的目的。但更彻底的理解方式是,Set是只有键的Map,而不是不重复的Array。 …
为什么C/C用顺序结构、选择结构、循环结构就能实现所有功能 2023-04-24 603 其实只是说结构化语言,可以用顺序结构、选择结构、循环结构来描述全部的算法而已。顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句。 一、为什么C/C用顺序结构、选择结构、循环结构就能实现所有 …