我正在学习计算机科学课程中的数组和链表。我的教授说,数组不能在末尾添加或删除元素,因此我们使用链表。
我知道Python、Ruby和JavaScript中的数组实现允许我随意修改数组的长度。这些语言是否真的实现了链表或其他数据结构,并将其称为数组?
底层发生了什么?如果它不是真正的数组,为什么他们还要这样称呼它?
我正在学习计算机科学课程中的数组和链表。我的教授说,数组不能在末尾添加或删除元素,因此我们使用链表。
我知道Python、Ruby和JavaScript中的数组实现允许我随意修改数组的长度。这些语言是否真的实现了链表或其他数据结构,并将其称为数组?
底层发生了什么?如果它不是真正的数组,为什么他们还要这样称呼它?
如果固定大小的数组已满,则无法向其末尾添加元素,但移除元素是可以的。这就是栈工作的原理。
在内部,Ruby数组被分配为固定大小的C-style数组,并在添加元素时自动调整大小。为了优化,它们通常会被重新调整到比所需空间稍大一点,以避免在每次添加时重新分配。
链表是一种不同的数据结构,允许更灵活的插入和删除,但遍历速度较慢,并且不允许轻松随机访问,这些对于数组结构非常重要。