遇到无限循环(Running into an infinite while loop)

编程入门 行业动态 更新时间:2024-10-23 07:37:11
遇到无限循环(Running into an infinite while loop)

我在这里遇到了一个无限循环。 我需要帮助找到一个边缘案例,我可能没有考虑过。

table是(键,值)对的数组。 isRemoved()标记表的元素(如果已删除)。

index是从'key'的散列函数派生的......这里我试图在哈希表中添加一个元素。

int removed = -1; while (table[index] != null) { if (table[index].isRemoved()) { if (removed != -1) { removed = index; } } else { if (key.equals(table[index].getKey())) { dData = table[index].getValue(); table[index].setValue(value); return dData; } else { index++; index %= startingSize; } } } if (removed != -1) { index = removed; }

I'm running into an infinite loop here. I need help finding an edge case here, that I might not have considered.

table is an array of (key, value) pairs. isRemoved() flags an element of table, if it has been removed.

index is derived from the hashing function of 'key'... Here I'm trying to add an element to the hash table.

int removed = -1; while (table[index] != null) { if (table[index].isRemoved()) { if (removed != -1) { removed = index; } } else { if (key.equals(table[index].getKey())) { dData = table[index].getValue(); table[index].setValue(value); return dData; } else { index++; index %= startingSize; } } } if (removed != -1) { index = removed; }

最满意答案

您的逻辑不是添加元素,而是更新现有值。 此外,你有一个循环逻辑。 摆脱“index%= startingSize;” 当索引达到表大小时,您确定表[index]将为null吗? Your logic is not adding an element but updating an existing value. Also, you have a circular logic. Get rid of "index %= startingSize;" Are you certain that the table[index] will be null when index reaches the table size?

更多推荐

本文发布于:2023-08-07 11:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464251.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Running   infinite   loop

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!