答案 0 :(得分:0)
1)不正确。让我们用一个大小为10
的数组的小例子。无论数组是否排序,如果删除第5个元素,你必须移动6使它变为5,移动7使它变为6,等等。
2)正确。双链表是一个列表,其中每个对象都包含指向前一个和下一个对象的指针。让我们取元素i
出于教育目的,考虑[i + 1]是下一个对象而[i - 1]是前一个对象(好像我们在数组中)
list[i].pPrevious = list[i - 1];
list[i].pNext = list[i + 1]
要从列表中删除对象i
,您只需确保前一个对象指向下一个对象,反之亦然。
list[i - 1].pNext = list[i + 1];
list[i + 1].pPrevious = list[i - 1];
之后你只需要删除对象本身,但它不再属于列表。
3)正确,最糟糕的情况是树只在左边,或者只在右边。这意味着您必须遍历整个树才能找到您正在寻找的对象。它是在O(n)中完成的,它与尝试获取列表的最后一个对象相同。
4)不正确。如果您尝试插入/查找/删除的对象是树的第一个(也是唯一的)对象,则它只是O(1)。通常的情况需要遍历树,平均值为O(log n)
5)见1)